在 MySQL 中组合日期字段进行比较
在具有基于日期的搜索过滤器的应用程序中,使用数据库模式可能具有挑战性将日期组件存储在单独的日、月和年字段中。本文演示如何组合这些字段并创建一个日期对象以与用户指定的日期范围进行比较。
考虑以下“日期”表结构:
CREATE TABLE `date` ( `deposition_id` varchar(11) NOT NULL default '', `day` int(2) default NULL, `month` int(2) default NULL, `year` int(4) default NULL, PRIMARY KEY (`deposition_id`) );
构造一个日期根据这些字段,MySQL 提供了以下函数:
创建表示特定日期的日期对象,可以使用以下步骤:
使用 MAKEDATE() 创建一个给定年份第一天的 DATETIME 对象:
MAKEDATE(year, 1)
使用 DATE_ADD() 将月份添加到 DATETIME 对象:
DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH)
最后,使用以下命令将日期添加到 DATETIME 对象DATE_ADD():
DATE_ADD(..., INTERVAL (day)-1 DAY)
通过组合这些函数,可以从单独的日、月和年字段构造完整的日期对象。然后,此日期对象可用于日期范围比较:
SELECT * FROM `date` WHERE DATE_ADD(DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH), INTERVAL (day)-1 DAY) BETWEEN '2013-01-01' AND '2014-01-01';
此查询将检索“日期”表中组合日期落在指定范围内的所有记录。通过利用 MAKEDATE() 和 DATE_ADD() 的组合,MySQL 使开发人员能够有效地操作和比较日期,即使存储在单独的字段中也是如此。
以上是如何在 MySQL 中组合单独的日、月和年字段来执行日期范围比较?的详细内容。更多信息请关注PHP中文网其他相关文章!