2012-06-06 63 views
-1

我想將varchar轉換爲datetime。在SQL Server 2008中的日期時間轉換

SELECT 
    CONVERT(DATETIME, CONVERT(VARCHAR, YEAR(GETDATE())) + '/' + 
    CONVERT(VARCHAR, MONTH(GETDATE())) + '/' + 
    CONVERT(VARCHAR, DAY(GETDATE()) + 27), 120) 

我期待的結果

2012-07-02 00:00:00.000 

但我的腳本拋出一個錯誤。

請任何人都幫助我。

感謝 Gurej

+2

錯誤消息通常設計爲通過提供有用的信息來幫助您。即使你無法從中收集有用的信息,也許那些幫助你的人可能會這樣做。 *錯誤信息是什麼意思?* –

+1

看起來很可能海報實際上是試圖刪除時間部分.... –

+1

每當使用'CONVERT(VARCHAR,...)'時,您應該**指定長度** 'VARCHAR'!否則,你可能會得到令人不快的意外.....所以使用'CONVERT(VARCHAR(50),.....)' –

回答

3

你爲什麼開始用datetime,它改寫(munging)到varchar然後鑄造回datetime

是你真正的問題,「我如何刪除日期時間的時間部分?」

如果是這樣,你做這樣的:

select DATEADD(day, DATEDIFF(day, 0, getdate()), 0) 

或SQL Server 2008開始,簡單地說:

select cast(CAST(getdate() as date) as datetime) 

甚至,聲明基本變量/列date,並使用

select CAST(getdate() as date) 
+1

得到ans.Thanks很多 – Gulrej

+1

隨時upvote和接受:[如何接受答案的工作?](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

相關問題