我有三列名为docDt,docDateTime和docTime。
docDt仅包含日期部分(例如2017-01-01 00:00:00:000)且docTime仅包含时间(例如1900-01-01 22:00:00:000)
此外,我将docDt和docTime组合存储到docDateTime(即2017-01-01 22:00:00:000)
我正在将新记录插入docDt(2017-01-02 00:00:00:000)和docTime(1900-01-01 10:00:00:000)的表中,并存储组合的日期和时间(2017-01-02 10:00:00:000)docDateTime。
现在我需要获取大于上述2017-01-01 22:00:00:000
的记录我尝试过使用以下条件
CONVERT(varchar(8), STH.DocTime , 108) >= '22:00:00.000' and CONVERT(varchar(10), STH.DocDt , 120) >='2017-01-01' ORDER BY STH.DocDt
注意:对于docTime,默认日期为1900-01-01
编辑:docDateTime仅供参考,我们不能使用它,因为它将存储在mysql中。 doctime和docdt存储在sqlserver中的位置
我可以得到任何帮助。
答案 0 :(得分:1)
如果日期列docDt
的时间部分始终为零,且时间列docTime
的日期部分也始终为基准日期(1900-01-01),那么您只需添加此项,
SELECT *
FROM TABLE
WHERE docDt + docTime > '2017-01-01 22:00:00:000'
答案 1 :(得分:0)
比较日期:(完全正常):
DECLARE @DATE TABLE (docDt DATETIME,docTime DATETIME,docDateTime DATETIME )
INSERT INTO @DATE VALUES('2017-01-01 00:00:00:000','1900-01-01 22:00:00:000','2017-01-01 22:00:00:000')
INSERT INTO @DATE VALUES('2017-01-02 00:00:00:000','1900-01-01 10:00:00:000','2017-01-02 10:00:00:000')
SELECT * FROM @DATE WHERE docDateTime>'2017-01-01 22:00:00:000'
- 或(根据您的要求)
select * from @DATE where (CONVERT(VARCHAR(10), docDt, 120)+' '+CONVERT(VARCHAR(10), docTime, 108))>'2017-01-01 22:00:00:000'
结果:
------------------------------------------------------------------------
|2017-01-02 00:00:00.000|1900-01-01 10:00:00.000|2017-01-02 10:00:00.000|
-------------------------------------------------------------------------
答案 2 :(得分:-1)
尝试使用docDateTime
docDateTime >2017-01-01 22:00:00:000