【发布时间】:2008-11-25 19:25:41
【问题描述】:
使用 MySQL 语法并有一个包含如下行的表:
mydate DATETIME NULL,
有没有办法做类似的事情:
... WHERE mydate<='2008-11-25';
我正在尝试,但没有真正让它发挥作用。
【问题讨论】:
使用 MySQL 语法并有一个包含如下行的表:
mydate DATETIME NULL,
有没有办法做类似的事情:
... WHERE mydate<='2008-11-25';
我正在尝试,但没有真正让它发挥作用。
【问题讨论】:
呃,WHERE mydate<='2008-11-25' 是的方法。应该可以的。
您是否收到错误消息?您使用的是旧版本的 MySQL 吗?
编辑:以下在 MySQL 5.x 上对我来说很好
create temporary table foo(d datetime);
insert into foo(d) VALUES ('2000-01-01');
insert into foo(d) VALUES ('2001-01-01');
select * from foo where d <= '2000-06-01';
【讨论】:
没关系找到答案。任何愿意回复的人都一样。
WHERE DATEDIFF(mydata,'2008-11-20') >=0;
【讨论】:
在标准 SQL 语法中,您可以使用:
WHERE mydate <= DATE '2008-11-20'
也就是说,关键字 DATE 应该在字符串之前。但是,在某些 DBMS 中,您不需要那么明确。系统将自动将 DATE 列转换为字符串,或将字符串转换为 DATE 值。如果将 DATE 转换为字符串,名义上会有一些有趣的含义 - 如果您碰巧有第一个千年的日期 (0001-01-01 .. 0999-12-31) 并且前导零被省略格式化系统。
【讨论】:
你可以添加时间组件
WHERE mydate<='2008-11-25 23:59:59'
但是如果 mydate 是“2008-11-25 24:59:59”,那么在 DST 切换日期可能会失败,因此在下一个日期之前获取所有内容可能是最安全的:
WHERE mydate < '2008-11-26 00:00:00'
【讨论】:
您的问题可能是您正在处理 DATETIME 数据,而不仅仅是日期。如果一行的 mydate 为“2008-11-25 09:30 AM”,那么您的 WHERE mydate 将不会返回该行。 '2008-11-25' 的隐含时间为 00:00(午夜),因此即使日期部分相同,它们也不相等,并且 mydate 更大。
如果您使用
【讨论】: