php - 从数据库中选择(从今天)差异最小的日期

标签 php mysql sql date select

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

SELECT MAX(DatumAangemaakt) AS RecenteSchema FROM Personeelsschema

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

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

有办法吗?

最佳答案

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

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

关于php - 从数据库中选择(从今天)差异最小的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30200153/

相关文章:

mysql - 为什么MySQL导入比导出慢?

sql - PostgreSQL:如何区分存储过程和表值函数?

SQL-Server 时间数据类型

PHP对子类的神奇方法__call

php - 如何使用 php 按学年和学期显示表格?

php - Yii2 保存前检查属性是否改变

php - Laravel - 删除一行(表)

mysql不在简单连接上使用索引

mysql - 错误 2002 (HY000) : Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) help me

php - 检查是否选择了查询中的所有行