2012-04-20 100 views
37

我有這種日期格式:2011-09-28 18:01:00(在varchar中),我想將它轉換爲datetime更改爲這種格式28-09-2011 18:01 :00。我該怎麼做?SQL Server將Varchar轉換爲日期時間

+0

這RDBMS使用?因爲日期功能可能不同 – Hajo 2012-04-20 13:21:39

+1

@Hajo:我認爲標題幾乎可以解釋它 – Quassnoi 2012-04-20 13:23:19

+0

@Quassnoi它可能是微軟的SQL服務器,但我不是100%確定,許多RDBMS可以是一個SQL服務器; – Hajo 2012-04-20 13:25:19

回答

62
SELECT CONVERT(Datetime, '2011-09-28 18:01:00', 120) -- to convert it to Datetime 

SELECT CONVERT(VARCHAR(30), @date ,105) -- italian format [28-09-2011 18:01:00] 
+ ' ' + SELECT CONVERT(VARCHAR(30), @date ,108) -- full date [with time/minutes/sec] 
+0

只記得datetime變量沒有格式。如果您希望以某種格式顯示,您必須將其轉換爲varchar。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-04-20 15:09:37

+1

datetime沒有格式,但你必須指定它如何重現文本(其中id是日/月......) – Zyku 2012-04-23 06:28:11

10

像這樣

DECLARE @date DATETIME 
SET @date = '2011-09-28 18:01:00' 
select convert(varchar, @date,105) + ' ' + convert(varchar, @date,108) 
+0

'我想將它轉換爲datetime更改爲這種格式28-09-2011 18:01:00。 - 你在哪裏使用新的格式? – MatBailie 2012-04-20 13:27:50

+0

這可行,但不需要四個轉換器。查看迭戈的答案SELECT CONVERT(VARCHAR(30),GETDATE(),105) – daniloquio 2012-04-20 13:39:44

+0

是的,Diego的答案需要將varchar(10)更改爲(30)。然後它會工作。 – daniloquio 2012-04-20 17:45:51

3

你可以這樣做,但它留下它作爲一個varchar

declare @s varchar(50) 

set @s = '2011-09-28 18:01:00' 

select convert(varchar, cast(@s as datetime), 105) + RIGHT(@s, 9) 

select convert(varchar(20), @s, 105) 
+0

這離開了時間 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-04-20 13:32:58

+0

@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz你說得對,修正了它。 – Taryn 2012-04-20 13:36:01

9

this網站顯示了幾個格式選項。

實施例:

SELECT CONVERT(VARCHAR(10), GETDATE(), 105) 
+5

不包括105時間部分。 OP從字符串開始,而不是日期時間。這*是有用的,但不是我認爲的完整答案。 – MatBailie 2012-04-20 13:29:54

+2

感謝評論小夥子們。我其實只是想把他指向正確的方向,這就是爲什麼我寫了「example」 – Diego 2012-04-20 13:50:43

3

如已經所述,日期時間沒有格式/字符串表示格式。

您可以使用某些格式更改字符串輸出。

將字符串轉換爲datetime:

declare @date nvarchar(25) 
set @date = '2011-09-28 18:01:00' 

-- To datetime datatype 
SELECT CONVERT(datetime, @date) 

給出:

----------------------- 
2011-09-28 18:01:00.000 

(1 row(s) affected) 

將其轉換成字符串你想要的:

-- To VARCHAR of your desired format 
SELECT CONVERT(VARCHAR(10), CONVERT(datetime, @date), 105) +' '+ CONVERT(VARCHAR(8), CONVERT(datetime, @date), 108) 

給出:

------------------- 
28-09-2011 18:01:00 

(1 row(s) affected) 
3
SELECT CONVERT(VARCHAR(10), GETDATE(), 105) + ' ' + CONVERT(VARCHAR(10), GETDATE(), 108) 
5

你可以有各種不同的風格,以datetime conversion

http://www.w3schools.com/sql/func_convert.asp

這有值範圍: -

CONVERT(data_type(length),expression,style) 

對於樣式值,
選擇你需要的人l我需要106.

所有現有的我的答案有一個特定的鏈接到幫助網站,以便即使是初學者可以參考。這就是如何更加有用

+0

謝謝@Dharmesh – baymax 2015-02-02 07:05:29

+0

你的答案似乎只是簡單地重複現有答案中給出的信息。正因爲如此,我刪除了你的答案。如果您希望將*新信息添加到您的答案中,請修改您的帖子,然後將其標記爲未刪除。 – Matt 2016-03-08 20:28:03

1

This web有一些很好的例子,任何的varchar轉換爲日期或日期時間

3

嘗試以下

select Convert(Varchar(50),yourcolumn,103) as Converted_Date from yourtbl 
相關問題