Abl*_*ias 15 sql-server between sql-server-2008
我有以下查询,
SELECT * FROM LOGS
WHERE CHECK_IN BETWEEN CONVERT(datetime,'2013-10-17') AND CONVERT(datetime,'2013-10-18')
Run Code Online (Sandbox Code Playgroud)
此查询不返回任何结果,但以下查询返回结果,
SELECT * FROM LOGS WHERE CHECK_IN >= CONVERT(datetime,'2013-10-17')
Run Code Online (Sandbox Code Playgroud)
为什么第一个查询没有返回任何结果?如果我有任何错误请纠正我.
小智 41
你有时间与你的约会相关吗?BETWEEN是包容性的,但当您将2013-10-18转换为日期时,它将变为2013-10-18 00:00:000.00.除非您包含时间值,否则在18日的第一秒之后记录的任何内容都不会使用BETWEEN显示.
尝试:
SELECT * FROM LOGS WHERE CHECK_IN BETWEEN CONVERT(datetime,'2013-10-17') AND CONVERT(datetime,'2013-10-18 23:59:59:999')
Run Code Online (Sandbox Code Playgroud)
如果你想搜索18日的整个一天.
SQL DATETIME字段有毫秒.所以我在场上加了999.
第二个查询是从第17个返回结果还是从第18个结果返回?
第一个查询仅返回18日或18日午夜的结果.
试试这个
select *
from LOGS
where check_in >= CONVERT(datetime,'2013-10-17')
and check_in< CONVERT(datetime,'2013-10-19')
Run Code Online (Sandbox Code Playgroud)
从 Sql Server 2008 开始,您拥有“日期”格式。
所以你可以使用
SELECT * FROM LOGS WHERE CONVERT(date,[CHECK_IN]) BETWEEN '2013-10-18' AND '2013-10-18'
Run Code Online (Sandbox Code Playgroud)
https://learn.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql
| 归档时间: |
|
| 查看次数: |
126314 次 |
| 最近记录: |