首页 > 解决方案 > 为什么 >= '5/1/2018' 和 <= '5/1/2018' 的 SQL 查询只返回 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 都不返回具有该日期的所有内容?我应该在我的日期周围加上另一个功能,这样我就不必输入时间并只看日期?

标签: sqlsqldatetime

解决方案


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

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

推荐阅读