好的我在编码和查询数据库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不返回具有该日期的所有内容,无论何时何地?是否还有其他功能,我应该在我的日期附近,所以我不必把时间放在一起,只看日期?
答案 0 :(得分:1)
你必须把时间放在一起,因为你的数据是日期时间。您可以通过将createdate转换为日期来编写查询,从而可以执行所要求的操作。
SELECT * FROM sometable WHERE CAST(createdate AS DATE) = '5/1/2018'