具有日期范围的Sql查询
我正在尝试使用下面的sql查询从表中获取记录具有日期范围的Sql查询,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在尝试使用下面的sql查询从表中获取记录 SELECT Code,Description FROM Table WHERE ID= 1 AND FromDate >= '2010-02-14' AND ToDate <= '2012-03-14' 请给我一个合适的解决方案。谢谢你的时间 试试这个: declare @dayAfter datetime --let take 1 day after set @dayAfter = DateAdd(day,1,'20120
SELECT Code,Description FROM Table
WHERE ID= 1 AND FromDate >= '2010-02-14' AND ToDate <= '2012-03-14'
请给我一个合适的解决方案。谢谢你的时间 试试这个:
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)
declare@dayAfter-datetime——让我们在
set@dayAfter=DateAdd(第1天,'20120314')
从表中选择代码、说明
其中ID=1和
FromDate>=“20100214”和
ToDate
p、 s:
DateAdd(day,DateDiff(day,0,@dayAfter),0)
将时间重置为00:00
因此,如果选择FromDate和ToDate之间的数据,则需要
所需的EndTime<次日开始
,然后删除ID=1。
在这种情况下,选择的是ID=1的记录,并且FromDate和ToDate选中了此条目。尝试以下查询,它肯定会解决您的问题
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) ;
从表中选择代码、说明
其中ID=1和
CONVERT(VARCHAR(10),FromDate,101)>=CONVERT(VARCHAR(10),CAST('2010-02-14'作为日期时间),101)和
CONVERT(VARCHAR(10),ToDate,101)您正在从ragne选择数据
FromDate >= '2010-02-14 00:00:0000' AND ToDate <= '2012-03-14 00:00:0000'
FromDate>='2010-02-14 00:00:0000'和ToDate='2010-02-14'和ToDate<'2012-03-15'
您可以发布您的表格设计吗?您可以向我们展示ID=1
的记录的FromDate
和ToDate
吗?@RoyiNamir-YYYY-MM-DD
对于日期是安全的,但是对于日期时间是不安全的。看看。@RoyiNamir-你误读了(就像我几乎误读的那样)。它说的是我的SQL Server愿望列表,而不是我的SQL Server愿望列表。@RoyiNamir-TT
才是安全的。删除T
,它将失败。非常感谢。。我已经修好了:)@SyedIbrahim不客气。请同时阅读我与马克和米凯尔之间的对话。有一些要点需要注意。(并且[也为我]学习)
FromDate >= '2010-02-14 00:00:0000' AND ToDate <= '2012-03-14 00:00:0000'
FromDate >= '2010-02-14' AND ToDate < '2012-03-15'
SELECT *
FROM table
WHERE year_date BETWEEN FromDate AND ToDate