【发布时间】:2011-03-10 18:49:46
【问题描述】:
这是我目前所拥有的
declare @Today smalldatetime
Set @Today = GETDATE()
select @Today
产量
2011-03-10 13:46:00
我需要的是:
2011-03-09
【问题讨论】:
标签: c# sql sql-server-2008 date
这是我目前所拥有的
declare @Today smalldatetime
Set @Today = GETDATE()
select @Today
产量
2011-03-10 13:46:00
我需要的是:
2011-03-09
【问题讨论】:
标签: c# sql sql-server-2008 date
试试这个:
SELECT REPLACE(CONVERT(VARCHAR, DATEADD(dd, -1, GETDATE()), 102), '.', '-')
GETDATE() 返回当前日期/时间。
DATEADD(dd, -1, GETDATE()) 从当前日期/时间减去一天。
CONVERT(VARCHAR, @DATE, 102)将日期转换为ANSI格式yyyy.mm.dd
并且根据您的示例,REPLACE 将用连字符替换预定义格式中的句点。
【讨论】:
对于 2008 年,您可以利用新的 DATE 数据类型:
SELECT CAST(DATEADD(d,-1,GETDATE()) AS DATE) AS Yesterday
对于所有版本:
SELECT CONVERT(CHAR(10), DATEADD(d,-1,GETDATE()), 120) AS Yesterday
显然,每种方法返回的数据类型是不同的。
【讨论】:
CHAR(10),我们只能获得完整yyyy-mm-dd hh:mi:ss 字符串的前10 个字符。
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
【讨论】:
SELECT CONVERT(VARCHAR, DATEADD(d,-1,GETDATE()), 110) AS Yesterday
【讨论】:
mm-dd-yyyy。 OP 要求yyyy-mm-dd。