当前位置: 首页 > 面试题库 >

PostgreSQL返回精确或最接近查询日期的日期

濮阳祯
2023-03-14
问题内容

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

问题是有时$ date_string在表中不可用,所以我想返回最接近$ date_string的日期。

$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;


 类似资料:
  • 问题内容: 我试图弄清楚如何编写一个MySQL查询,该查询将返回日期最近的3个事件。 这是我的桌子: 因此,查询结果应为ID的1,2,5,因为它们是与当前日期相比最接近的ID。 编辑: 查询应该只找到将来的事件。 问题答案: 这意味着1天前的事件与将来1天的事件一样接近。如果您只想要尚未发生的事件,请执行

  • 问题内容: 给定此基准日期: 我想在列表中找到一个包含最接近日期的元组,但是它不能是更早的日期。 所以这里的输出应该是(它不能是第三个元组,因为那里的日期早于基准日期) 我的问题是,是否存在用于此类日期比较的任何模块?我试图先将所有数据更改为格式,然后进行比较,但是我的代码变得很丑陋,而且切片很多。 @编辑: 要测试的大清单: 要测试的大清单: 问题答案: 将日期转换为datetime对象,所以现

  • 我有两个日期字段: 开始日期和结束日期和临时日期。 我有一个列表,其中我在开始日期和结束日期之间返回了6条记录。我如何过滤记录并返回最接近临时日期的日期时间? 在示例记录中,我需要获得第二条记录,因为与临时日期相近。实例

  • 问题内容: 我有两个表,一个称为“事件”,一个称为“文档”。每个表都有两个日期列,开始和结束(因此,事件开始,事件结束,文档开始,文档结束)。这两个表通过名为Customer_ID的字段链接。我有兴趣根据客户ID将最接近的相关事件开始(及其ID)日期返回到Doc开始日期,因此表中的数据如下所示: 我希望最终结果显示如下: 我尝试使用谷歌搜索解决方案,并尝试了一个或两个建议,但我找不到的示例似乎都不

  • 问题内容: 我刚刚从Gord Thompson那里得到了一个类似问题的大力帮助(通过在同一日期或最接近的先前日期(不仅是完全匹配)进行联接来合并两个表),但现在意识到我的数据不是我所期望的。事实证明,我的Lead_Dates可以晚于Product_Interest_Dates,这导致先前的SQL代码删除了这些情况。进一步来说: 我有两个表: 顾客ID Lead_Date Lead_Source 和

  • 问题内容: 我有一个日期对象列表和一个目标日期。我想在列表中找到最接近目标日期的日期,但仅找到目标日期之前的日期。 示例:2008-10-1 2008-10-2 2008-10-4 目标日期为2008-10-3,我想获得2008-10-2 最好的方法是什么? 问题答案: Sietse de Kaper解决方案采用了 反向 排序的列表,绝对不是最自然的解决方案 Java中的自然排序顺序遵循递增的自然