gpt4 book ai didi

mysql - SQL 查询在特定日期不起作用

转载 作者:行者123 更新时间:2023-11-30 21:54:30 25 4
gpt4 key购买 nike

我在 mysql 中遇到了一个奇怪的问题!我的查询是

SELECT * FROM aa WHERE problemTime>= '2016/03/20' AND problemTime<= '2016/04/20' 

这个查询的结果是什么都没有,但是当我第一次把时间改成 2016/03/19 或 2016/03/21 时,我得到了以下结果!我的意思是这些查询

SELECT * FROM aa WHERE problemTime>= '2016/03/21' AND problemTime<= '2016/04/20' 

SELECT * FROM aa WHERE problemTime>= '2016/03/19' AND problemTime<= '2016/04/20' 

两次(第19次和第21次)的结果都是

enter image description here

但是当我使用 20th 时,结果很明显

我的主表是

enter image description here

我将时间格式从 2016/03/20 更改为 2016-03-20(我的意思是将/更改为 - )但它也没有更改!

有什么问题吗?

最佳答案

如果您的 problemTime 列是 datetime 类型,您真的应该运行这样的查询:

SELECT * FROM aa 
WHERE
problemTime>= str_to_date('2016/03/20', '%Y/%m/%d') AND
problemTime <= str_to_date('2016/04/20', '%Y/%m/%d')

不要依赖字符串和日期之间的隐式转换。不要管表数据,并确保将 where 子句参数显式转换为与表中相同的数据类型。还要记住,“没有”时间的日期实际上是相关日期的午夜,而午夜就像零,这是任何一天发生的第一件事。给定日期的早上 6 点时间是午夜之后,因此查询要求日期小于或等于特定日期午夜的日期意味着早上 6 点日期将被排除

这是一般良好的数据库实践;尽可能不要转换表数据,因为它会导致巨大的性能损失和错误的结果

关于mysql - SQL 查询在特定日期不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45831691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com