从 MySQL 中的日、月、年字段创建日期
在数据库应用程序中,经常需要根据单独的日、月和年字段用于比较或其他处理。当数据库模式继承自之前选择以非标准方式存储日期组件的设计时,这一点变得尤为重要。
问题陈述(修订版)
此问题涉及从具有“日”、“月”和“年”各个字段的表(而不是合并的日期字段)在 SQL 中创建日期对象。目的是使用 BETWEEN 子句将这些日期与用户输入范围进行比较。
数据库架构
以下是为“日期”提供的架构表:
CREATE TABLE IF NOT EXISTS `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`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
解决方案
要从这些单独的组件创建日期对象,可以使用以下 SQL 逻辑:
示例查询
选择“日期”表中构造日期在特定范围内的所有行:
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';
此查询将返回构造组合日期的所有行各个字段中的日期介于两个提供的日期之间。
以上是如何在 MySQL 中从单独的日、月和年字段构造日期?的详细内容。更多信息请关注PHP中文网其他相关文章!