2011-03-10 72 views

回答

9

試試這個:

SELECT REPLACE(CONVERT(VARCHAR, DATEADD(dd, -1, GETDATE()), 102), '.', '-') 

GETDATE()返回當前的日期/時間。

DATEADD(dd, -1, GETDATE())從當前日期/時間一天減少。

CONVERT(VARCHAR, @DATE, 102)日期轉換爲ANSI格式yyyy.mm.dd

和REPLACE將帶有連按你的例子​​替換預定義的格式週期。

+0

110應該在SQL中返回格式化的mm-dd-yyyy http://www.w3schools.com/sql/func_convert.asp – iivel 2011-03-10 19:16:39

2

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

+0

哦,這是昨天的日期? – WillIAM 2011-03-10 18:54:41

+0

因爲我剛剛閱讀您的示例代碼,所以錯過了「昨天」一詞。我將dateadd函數添加到我的代碼中。 – iivel 2011-03-10 18:59:15

+0

不,這是我的錯,我沒有在描述中指定...我很慚愧 – WillIAM 2011-03-10 19:12:03

9

對於2008年,你可以利用新的數據類型DATE的:

SELECT CAST(DATEADD(d,-1,GETDATE()) AS DATE) AS Yesterday 

對於所有版本:

SELECT CONVERT(CHAR(10), DATEADD(d,-1,GETDATE()), 120) AS Yesterday 

顯然,每種方法返回的數據類型是不同的。

+0

奇怪... SQL文檔說格式120包括hh:mm:ss - 錯誤的文檔版本? – 2011-03-10 19:00:33

+1

@Dylan Beattie,120是你說的,但是對CHAR(10)的演員丟棄時間。 – bobs 2011-03-10 19:01:53

+1

@Dylan:否。通過爲轉換數據類型指定'CHAR(10)',我們只能得到完整的'yyyy-mm-dd hh:mi:ss'字符串的前10個字符。 – 2011-03-10 19:02:13

1
SELECT CONVERT(VARCHAR, DATEADD(d,-1,GETDATE()), 110) AS Yesterday 
+0

這給了'mm-dd-yyyy'。 OP要求'yyyy-mm-dd'。 – 2011-03-10 19:17:24

+0

只需使用23作爲格式參數,如:SELECT CONVERT(VARCHAR,DATEADD(d,-1,GETDATE()),23)AS昨天 – 2011-03-10 19:26:15

+0

@K Invaov:有趣的是,我從來沒有見過23個地方記錄過任何地方。 – 2011-03-10 19:29:38