不使用正确类型(日期)的道歉。使用nvarchar
选择不当,但在此阶段我无法转换。
问题:
我希望能够搜索特定日期范围内的数据,例如10.01.16 - > 16年2月19日
然而,它似乎只带回了前两位数字的数据,因此无论月份和年份如何,所有数据都在10到19之间。
我的查询如下:
SELECT ID, Day, Date FROM oneHr$
WHERE date >= CONVERT(NVARCHAR, '10.01.16', 4)
AND date <= CONVERT(NVARCHAR , '19.02.16', 4)
ORDER BY Date ASC
有什么想法吗?非常感谢并提前感谢。
这是返回的内容:
ID Day Date
--------------------
943 fri 10.02.15
746 mon 10.02.16
234 tue 10.03.15
835 fri 10.04.15
988 tue 10.05.15
487 wed 11.01.16
343 wed 11.02.15
874 mon 12.01.16
663 thu 12.01.15
198 tue 12.02.15
775 wed 13.01.16
993 thu 14.01.15
375 fri 15.03.15
337 wed 16.12.15
784 tue 17.11.15
777 mon 18.08.15
252 thu 19.01.16
664 wed 19.02.15
更新
所以,我已将Date更改为datetime类型并且看起来都很好。但是,我试图定义一个范围而不是硬编码它并且它不起作用。有什么想法吗?
set @date1 = '2016-01-01 00:00:00' -- Date1 (start range)
set @date2 = '2016-01-10 00:00:00' -- Date2 (end range)
/* Not Working */
select * from oneHr$
where Date >= @date1
and Date <= @date2
order by ID
/* Working */
select * from oneHr$
where Date >= '2016-01-01 00:00:00'
and Date <= '2016-01-10 00:00:00'
order by ID
答案 0 :(得分:1)
为什么不做这样的事情?
SELECT ID, Day, Date FROM oneHr$
WHERE CONVERT(DATE, date, 4) >= @Date1
AND CONVERT(DATE, date, 4) <= @Date2
ORDER BY Date ASC
然后您根本不必将输入转换为nvarchar。