为什么 SQL Query of >= '5/1/2018' and <= '5/1/2018' only return rows of 2018-05-01 00:00:00?

Why Does SQL Query of >= '5/1/2018' and <= '5/1/2018' only return rows of 2018-05-01 00:00:00?

好的,经过 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 return 所有有那个日期的东西,不管现在是什么时候?我应该在我的日期前后添加另一个函数,这样我就不必输入时间而只看日期了吗?

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

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