我有以下postgresql语法,它返回session_date与$date_string匹配的值

问题是,有时$date_字符串在表中不可用,所以我希望返回最接近$date_字符串的日期

$date_string = '2014-04-25';

SELECT year, session_date FROM calendar_dates WHERE session_date='$date_string'

你知道我该怎么做吗?

推荐答案

如果你想要最接近的日期,可以这样做:

SELECT year, session_date
FROM calendar_dates
WHERE session_date < '$date_string'
ORDER BY session_date DESC
LIMIT 1;

之后最接近的日期使用类似的逻辑.

对于任何一侧最近的:

SELECT year, session_date
FROM calendar_dates
ORDER BY abs(session_date - date '$date_string') 
LIMIT 1;

Postgresql相关问答推荐

使用regexp获取表名

如何在Common Lisp中使用Postmodern在表更改时获得通知?

锁定模式与PostgreSQL中的另一种锁定模式冲突到底是什么意思?

将XML解析从T-SQL迁移到Postgres时出现问题

Npgsql中准备好的语句和参数化查询有什么区别?

如何为基于复合类型的 Postgres DOMAIN 定义 CHECK 约束

如何在 postgresql 上使用 sqlalchemy 进行正确的 upsert?

从具有加权行概率的 PostgreSQL 表中 Select 随机行

如何在 PostgreSQL 中截断日期?

PostgreSQL 中的 JSON 外键

postgresql 在查询中插入空值

在 row_to_json 函数中 Select 查询

适配器 Ecto.Adapters.Postgres 未编译

Postgres 数据库文件保存在 ubuntu 中的什么位置?

PostgreSQL 条件 where 子句

PG::ConnectionBad FATAL:role "Myname" does not exist

如果 PostgreSQL count(*) 总是很慢,如何对复杂查询进行分页?

如何使 array_agg() 像 mySQL 中的 group_concat() 一样工作

我应该在 Django DATABASE ENGINE 中使用哪个 Postgres 值?

如何在 postgres 查询中排名