【问题标题】:Select date with the least different (from today) from database从数据库中选择差异最小的日期(从今天开始)
【发布时间】:2015-07-23 20:59:48
【问题描述】:

谁能告诉我如何从现在开始选择最近的日期(差异最小)?
目前我正在使用这样的东西

SELECT MAX(DatumAangemaakt) AS RecenteSchema FROM Personeelsschema

我使用 Max() 函数,但它不好,因为如果我有一个未来的日期(例如 2015-06-23),这个日期将被选中。

我需要的是选择今天的日期(如果有的话)或从今天开始的最近日期,例如:
2015-06-23
2015-06-01
2015-05-17(这一个会被选中)

有没有办法做到这一点?

【问题讨论】:

    标签: php mysql sql date select


    【解决方案1】:

    获取当前日期之后的所有日期,对它们排序并获取最高记录:

    SELECT DatumAangemaakt AS RecenteSchema
    FROM Personeelsschema
    WHERE DATE(DatumAangemaakt) >= DATE(NOW()) 
    ORDER BY  DatumAangemaakt  LIMIT 1
    

    SQL Fiddle Demo

    如果您还想在邻近检查中包含 过去的日期,则可以使用以下查询:

    SELECT DatumAangemaakt
    FROM Personeelsschema
    ORDER BY ABS(TIMESTAMPDIFF(DAY, DatumAangemaakt, DATE(NOW()))) LIMIT 1
    

    SQL Fiddle Demo

    【讨论】:

    • 非常感谢,我现在试试这个,让你知道
    • 这会获取未来的日期,而不是过去的日期,对吧?如果我想获取过去的日期,我应该这样做吗? OR DATE(DatumAangemaakt) <= DATE(NOW())
    • @ElomarAdam 我刚刚做了一个编辑来解决这个问题!
    • 是的,我刚刚看到,在我写了评论之后,这解决了一切!非常感谢先生的帮助!非常感谢! ^^
    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2022-10-25
    相关资源
    最近更新 更多