sql - 为什么 >= '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 都不返回具有该日期的所有内容?我应该在我的日期周围加上另一个功能,这样我就不必输入时间并只看日期?
解决方案
您必须输入时间,因为您的数据是日期时间。您可以编写一个查询,通过将 createdate 转换为日期来执行您所要求的操作。
SELECT * FROM sometable WHERE CAST(createdate AS DATE) = '5/1/2018'
推荐阅读
- jquery - 删除父元素时工具提示不会隐藏
- android - 如何将文本视图中显示的 QR 扫描详细信息传递或获取到字符串?
- apache-kafka - 向同一消费者组内的所有订阅者广播消息
- google-cloud-platform - 如何在使用 Google Spanner 的 readUsingIndex 方法时指定我的 WHERE 条件
- python - 在 Azure IOT Central 中使用地理点属性
- sql-server - 在使用表值函数返回表之前执行处理?
- flutter - Flutter pushAndRemoveUntil 工作错误 - 推送到新屏幕并删除所有以前的屏幕
- ssis - SQL Server 代理作业已执行,但日志日期显示未来时间
- oracle - 这个简单的块有什么问题?PL SQL
- python - 使用条件和 groupby 操作 Pandas DataFrame