将 MySQL 日期与 date_format 进行比较
尽管尝试了多种日期比较方法,但用户还是遇到了意外结果。他们试图比较格式为“%d-%m-%Y”的日期,但结果集中包含错误记录。
问题源于比较字符串而不是日期。 date_format 函数将日期转换为字符串,使比较容易受到字典顺序的影响。例如,“28-10-2012”按字母顺序排列大于“02-11-2012”,因此尽管按时间顺序排列较早,但它仍包含在结果集中。
要解决此问题,应在日期而不是字符串。日期函数可用于从 DATETIME 或 DATE 字段中提取日期部分。通过比较提取的日期,确保时间顺序。
例如:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
在此查询中,date(starttime) 从 starttime 字段中提取日期,然后将其与 YYYY-MM 中的指定日期进行比较-DD 格式。 date_format 函数仅用于格式化结果。
如果 starttime 是 DATETIME 字段,请考虑使用:
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
此查询避免了重复的日期转换,因为直接在 DATETIME 字段上执行比较。
请记住,ISO -8601标准建议使用'YYYY-MM-DD'作为日期格式,但提供的代码遵循用户指定的'%d-%m-%Y'格式。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3