为什么SQL查询> =' 5/1,2018'和< =' 5/1,2018'只返回2018-05-01 00:00:00的行?

时间:2018-05-04 14:18:54

标签: sql sqldatetime

好的我在编码和查询数据库20多年后应该知道这一点,但它对我来说仍然没有意义。

如果我这样做:

SELECT * FROM sometable WHERE createdate >= '5/1/2018' and createdate <= '5/1/2018'

我明白了:

6500061 2018-05-01 00:00:00
6500642 2018-05-01 00:00:00
6505091 2018-05-01 00:00:00
6505453 2018-05-01 00:00:00
6505469 2018-05-01 00:00:00
6505506 2018-05-01 00:00:00

但如果我这样做:

SELECT * FROM sometable WHERE createdate >= '5/1/2018 00:00:00' and createdate <= '5/1/2018 23:59:59'

我明白了:

6500061 2018-05-01 00:00:00
6500642 2018-05-01 00:00:00
6500652 2018-05-01 11:08:00
6500726 2018-05-01 11:25:00
6500736 2018-05-01 11:27:00
6504776 2018-05-01 15:05:00
6504778 2018-05-01 15:06:00
6505091 2018-05-01 00:00:00
6505371 2018-05-01 17:42:00
6505453 2018-05-01 00:00:00
6505469 2018-05-01 00:00:00
6505506 2018-05-01 00:00:00
6507371 2018-05-02 00:00:00
6508695 2018-05-02 00:00:00

为什么SQL不返回具有该日期的所有内容,无论何时何地?是否还有其他功能,我应该在我的日期附近,所以我不必把时间放在一起,只看日期?

1 个答案:

答案 0 :(得分:1)

你必须把时间放在一起,因为你的数据是日期时间。您可以通过将createdate转换为日期来编写查询,从而可以执行所要求的操作。

SELECT * FROM sometable WHERE CAST(createdate AS DATE) = '5/1/2018'