我轉換一些字符串值datetime
如下:日期時間轉換在SQL Server 2005中
'20131018'
'20130917'
使用
CONVERT(DATETIME, @date, 101)
我得到了以下
'2013-10-18 00:00:00.000'
'2013-09-17 00:00:00.000'
我怎麼刪除值的時間部分?
我轉換一些字符串值datetime
如下:日期時間轉換在SQL Server 2005中
'20131018'
'20130917'
使用
CONVERT(DATETIME, @date, 101)
我得到了以下
'2013-10-18 00:00:00.000'
'2013-09-17 00:00:00.000'
我怎麼刪除值的時間部分?
SUBSTRING(表達,啓動,長度),其中表達將是您的時間戳串,並開始將是1和長度將是「YYYY-MM-DD」,即長度10對於 多個參考請http://technet.microsoft.com/en-us/library/ms187748.aspx
檢查「marc_s」所說的內容。只需使用DATE而不是DATETIME.This將是更好的選擇。
真的,'DATE'在這裏是更好的選擇 - 但是這個數據類型是** NOT YET **在SQL Server * * 2005 **,即OP正在使用.... –
@ marc_s - 然後我們可以使用子串,我認爲我建議。 – virus
有我做的一些代碼。如果你能弄清楚如何讓這個更快或更好,讓我知道! ;)
case --Format date into YYYYMMDD with placeholder 0's
when (CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as int) < 10) AND (CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as int) < 10)
then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4))
+'0'+ LTRIM(RTRIM(CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))))
+'0'+LTRIM(RTRIM(CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))))
when (CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as int) < 10)
then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4))
+'0'+LTRIM(RTRIM(CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))))
+CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))
when (CAST(DATEPART(DD, DATEADD(day, 7, <DATE>)) as int) < 10)
then CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4))
+ CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))
+'0'+LTRIM(RTRIM(CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))))
else CAST(DATEPART(YYYY,DATEADD(day, 7, <DATE>)) as CHAR(4))
+CAST(DATEPART(MM,DATEADD(day, 7, <DATE>)) as CHAR(2))
+CAST(DATEPART(DD,DATEADD(day, 7, <DATE>)) as CHAR(2))
end
下面是它的工作原理。把它放在SELECT之後。做一個查找和替換,並把你的日期在那裏。它會檢查月份和日期的數字位數,然後在適當的時候在字符串中插入0或2。我保存了這段代碼,以便在遇到此問題時很容易使用。希望能幫助到你!
- 編輯 - 它發生在我,這可能是你想要做什麼反...
在SQL Server 2008 ** **,你會得到'DATE'數據類型只是那 - 僅限日期。 2005年只有'DATETIME',這些值總是包含時間部分。 –
時間組件是否會破壞任何東西,或只是在視覺上煩人? – StingyJack
CONVERT(日期,@date,101)會做你想做的事 –