从SQL Server 2005的日期时间开始的当前月份和当前年份的特定日期

时间:2010-08-22 21:53:41

标签: sql sql-server sql-server-2005 tsql

大家好我想要发票和客户端的搜索数据到今天我正在使用DateDiff()GETDATE()函数,例如两个表

1个客户

 - ID   int
 - Name Varcher

2发票

 - ID int
 - ClientID int
 - date  Datetime
 - Total  money

查询

 Select * from client c 
 inner join invoice i on c.id = i.ClientID 
 WHERE DateDiff(dd, i.date, getdate()) = 0

我希望在当前月份的特定日期和从日期时间开始的当前年份中选择查询 如果当前月份是08年和当前年份2010,我想写一个月的任何一天 感谢每个人帮助我

2 个答案:

答案 0 :(得分:3)

这里有一种方法也可以使用索引

where i.date >= DATEADD(Day, DATEDIFF(Day, 0, GETDATE()), 0)
and i.date < DATEADD(Day, DATEDIFF(Day, 0, GETDATE()), 1)

答案 1 :(得分:1)

从当前月份和年份中的特定日期选择记录的最简单方法是声明分配给指定日期,月份和年份的日期时间变量,并将查询中的getdate()替换为变量 - 如这样:

declare @date datetime 

select @date = '10-Aug-2010'

Select * from client c 
inner join invoice i on c.id = i.ClientID 
WHERE DateDiff(dd, i.date, @date) = 0

编辑:要针对当月的指定日期运行查询,请尝试以下操作:

declare @day integer

select @day = 10

Select * from client c 
inner join invoice i on c.id = i.ClientID 
WHERE DateDiff(dd, i.date, dateadd(dd,@day-datepart(dd,getdate()),getdate())) = 0