【发布时间】:2021-04-07 07:22:17
【问题描述】:
我正在查询一个表,其时间列按以下格式返回:
2020-12-30 18:26:23.537
2020-12-30 17:43:19.707
2020-12-30 15:36:13.653
2020-12-30 15:35:23.160
2020-12-30 15:23:33.063
2020-12-30 15:22:42.243
2020-12-30 15:18:26.230
2020-12-30 15:15:20.083
2020-12-30 15:13:08.813
当我查询此列是什么格式时,它显示为日期时间。更新:
使用此查询,它返回日期时间:
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'vStatusMessagesWithStrings' AND COLUMN_NAME = 'TIme'
我尝试通过多种方式通过 where 语句来缩小结果范围,但每次运行它时,我都会看到所有返回的日期,一直到 7 月。
我尝试过只使用>= and <=,我也尝试过使用“Between”,但没有任何效果。
我已经尝试将字符串作为 20201228 和 2020-12-28 和 2020/12/30 但没有帮助。
我读到在使用 between 时还需要指定时间,所以我尝试将其精确到毫秒,但仍然返回所有内容。我已经尝试对日期字符串进行强制转换和转换,但没有任何效果。
以下是我在 where 语句中尝试过的不同格式的几个示例:
and (sms.[Time] <= (convert(date,'20201228')) and SMS.[TIME] >= (convert(date,'20201222')))
and (sms.[Time] >= '20201222' and SMS.[Time] <= '20201228')
and ((sms.[Time] >= Cast('20201222' as DateTime)) and (SMS.[Time] <= Cast('20201228' as DateTime)))
and (sms.[Time] Between Cast('20201222 00:00:00.000' as DateTime) and Cast('20201228 00:00:00.000' as DateTime))
and (sms.[Time] Between Cast('2020-12-22 00:00:00.000' as DateTime) and Cast('2020-12-28 00:00:00.000' as DateTime))
and ((sms.[Time] >= Cast('2020-12-22 00:00:00.000' as DateTime)) and sms.[Time] <= Cast('2020-12-28 00:00:00.000' as DateTime))
and ((sms.[Time] >= '2020-12-22' ) and (sms.[Time] <= '2020-12-28'))
【问题讨论】:
-
你有什么问题?你的例子看起来很合理。
-
and之前的内容是什么?where子句中是否有or -
^^^^ 那是实际答案:) 很好发现
-
很高兴你得到它。下次发布整个代码:-)
标签: sql sql-server date tsql between