我正在尝试使用以下sql查询从表中获取记录。
SELECT Code,Description FROM Table
WHERE ID= 1 AND FromDate >= '2010-02-14' AND ToDate <= '2012-03-14'
即使此日期存在记录,查询也不会返回任何内容。
ID HID HCode HDescription FromDate ToDate
-------------------------------------------------------------------
1 3 H8 New Year 2012-03-14 12:38:00 2012-03-14 12:38:00
请给我一个合适的解决方案。谢谢你的时间!!
答案 0 :(得分:2)
试试这个:
declare @dayAfter datetime --let take 1 day after
set @dayAfter = DateAdd(day,1,'20120314')
SELECT Code,Description FROM Table
WHERE ID= 1 AND
FromDate >= '20100214' AND
ToDate < DateAdd(day, DateDiff(day, 0, @dayAfter ), 0)
p.s:
DateAdd(day, DateDiff(day, 0, @dayAfter ), 0)
会将时间重置为00:00
所以你需要desired EndTime < begining of the day after
答案 1 :(得分:0)
如果您在FromDate和ToDate之间选择数据,则删除ID = 1。 在这种情况下,Аs是ID = 1的选定记录,FromDate和ToDate选中此条目。
答案 2 :(得分:0)
尝试使用以下查询,它肯定会解决您的问题....
SELECT Code,Description FROM Table
WHERE ID= 1 AND
CONVERT(VARCHAR(10), FromDate, 101)>= CONVERT(VARCHAR(10),CAST('2010-02-14' AS DATETIME),101) AND
CONVERT(VARCHAR(10), ToDate, 101)<= CONVERT(VARCHAR(10),CAST('2012-03-14' AS DATETIME),101) ;
答案 3 :(得分:0)
您正在从ragne中选择数据
FromDate >= '2010-02-14 00:00:0000' AND ToDate <= '2012-03-14 00:00:0000'
你应该这样做:
FromDate >= '2010-02-14' AND ToDate < '2012-03-15'
答案 4 :(得分:0)
SELECT *
FROM table
WHERE year_date BETWEEN FromDate AND ToDate