日期:2014-05-17  浏览次数:20568 次

求学:关于SQL日期查询昨天的数据
本帖最后由 apple_t 于 2013-11-17 22:45:24 编辑
是这样,如果我程序传过来的数据是一个字符型的“2013-11-17”,
那要查询该日期的昨日数据,但里面有一个字段addtime为datetime类型应该如何写SQL?  注意日期只是假设是“2013-11-17”出有可能是‘2013-11-1’那么它昨天数据是‘2013-10-1’的数据了。

  请SQL语句,麻烦大哥大姐们

------解决方案--------------------

declare @x varchar(15)
select @x='2013-11-17'

select * from [表名] 
 where addtime between dateadd(d,-1,@x) and dateadd(s,-1,@x)

------解决方案--------------------
获取昨天的起止时间,

declare @x varchar(15)
select @x='2013-11-17'
select dateadd(d,-1,@x) 'begin',dateadd(s,-1,@x) 'end'

/*
begin                   end
----------------------- -----------------------
2013-11-16 00:00:00.000 2013-11-16 23:59:59.000

(1 row(s) affected)
*/


declare @x varchar(15)
select @x='2013-11-1'
select dateadd(d,-1,@x) 'begin',dateadd(s,-1,@x) 'end'

/*
begin                   end
----------------------- -----------------------
2013-10-31 00:00:00.000 2013-10-31 23:59:59.000

(1 row(s) affected)
*/

------解决方案--------------------
引用:
Quote: 引用:

SELECT * FROM TableName WHERE addtime=DATEADD(DAY,-1,'2013-11-17')

 大哥冒似不行啊


这样呢,行吗:

SELECT * FROM TableName 
WHERE addtime>=DATEADD(DAY,-1,'2013-11-17')
and addtime <'2013-11-17'