我正在用sql写一个存储过程!
我必须在特定日期获得记录。
我正在使用此查询:
Declare @FromDate datetime
set @FromDate = '06/02/2014'
select * from Table where Date = @FromDate
实际上,在数据库中,该日期有10条记录,但它只显示两条记录,因为@FromDate
正在这样做06/02/2014 00:00:00.000
如果我像这样编写查询,则意味着它可以正常工作!
select * from Table
where Date between '2014-08-28 00:00:00.000' and '2014-08-28 23:59:59.999'
如何解决这个问题?我需要获得该特定日期的所有记录。
请帮助我!
答案 0 :(得分:2)
如果@FromDate
的数据类型为datetime
且Table.Date
的数据类型为datetime
,则:
Declare @FromDate datetime = '2014-06-02';
Select Table.Date
From Table
Where Table.Date >= @FromDate And Date < DateAdd(day, 1, Table.Date)
在上面,我们创建一个包容性的下边界(任何等于或晚于2014-06-02的边界)和一个独占的上边界(早于2014-06-03),但只定义一次变量。因此,有效的查询检查2014-06-02 <= FromDate < 2014-06-03
。
答案 1 :(得分:0)
如果您将DateTime
转换为Nvarchar
,您的问题就会得到解决。
尝试此查询:
Declare @Date datetime='2014-08-28 00:00:00.000'
select * from Table
where CONVERT(nvarchar(20),Date,105) = CONVERT(nvarchar(20),@Date,105)