这里是我有什么到目前为止SQL-日期 - 问:如何获得昨天的日期在以下formatte
declare @Today smalldatetime
Set @Today = GETDATE()
select @Today
产量
2011-03-10 13:46:00
我需要的是:
2011-03-09
这里是我有什么到目前为止SQL-日期 - 问:如何获得昨天的日期在以下formatte
declare @Today smalldatetime
Set @Today = GETDATE()
select @Today
产量
2011-03-10 13:46:00
我需要的是:
2011-03-09
试试这个:
SELECT REPLACE(CONVERT(VARCHAR, DATEADD(dd, -1, GETDATE()), 102), '.', '-')
GETDATE()
返回当前的日期/时间。
DATEADD(dd, -1, GETDATE())
从当前日期/时间一天减少。
CONVERT(VARCHAR, @DATE, 102)
日期转换为ANSI格式yyyy.mm.dd
和REPLACE将带有连按你的例子替换预定义的格式周期。
SELECT CONVERT(varchar, DATEADD(d,-1,GETDATE()), 110)
或
SELECT CAST(DATEADD(d,-1,GETDATE()) AS DATE) AS 'DATE'
很好的参考,如果你再次需要这些代码。 http://www.w3schools.com/sql/func_convert.asp
对于2008年,你可以利用新的数据类型DATE的:
SELECT CAST(DATEADD(d,-1,GETDATE()) AS DATE) AS Yesterday
对于所有版本:
SELECT CONVERT(CHAR(10), DATEADD(d,-1,GETDATE()), 120) AS Yesterday
显然,每种方法返回的数据类型是不同的。
奇怪... SQL文档说格式120包括hh:mm:ss - 错误的文档版本? – 2011-03-10 19:00:33
@Dylan Beattie,120是你说的,但是对CHAR(10)的演员丢弃时间。 – bobs 2011-03-10 19:01:53
@Dylan:否。通过为转换数据类型指定'CHAR(10)',我们只能得到完整的'yyyy-mm-dd hh:mi:ss'字符串的前10个字符。 – 2011-03-10 19:02:13
SELECT CONVERT(VARCHAR, DATEADD(d,-1,GETDATE()), 110) AS Yesterday
这给了'mm-dd-yyyy'。 OP要求'yyyy-mm-dd'。 – 2011-03-10 19:17:24
只需使用23作为格式参数,如:SELECT CONVERT(VARCHAR,DATEADD(d,-1,GETDATE()),23)AS昨天 – 2011-03-10 19:26:15
@K Invaov:有趣的是,我从来没有见过23个地方记录过任何地方。 – 2011-03-10 19:29:38
110应该在SQL中返回格式化的mm-dd-yyyy http://www.w3schools.com/sql/func_convert.asp – iivel 2011-03-10 19:16:39