簡體   English   中英

SQL Server 2008:Varchar到Datetime轉換

[英]SQL Server 2008 : Varchar to Datetime conversion

我有一個datetimeArrivalDateTime ,它存儲為varchar值。

假設值為20161212093256 ,我希望輸出為2016-12-12 09:32:56

我可以用日期時間格式獲取日期部分,如下所示。

SELECT 
    CONVERT(DATETIME2(0), LEFT('20161212093256', 8))

這將輸出返回為2016-12-15 00:00:00

我嘗試了以下查詢來獲取時間部分。

SELECT 
    CONVERT(DATE, LEFT('20161212093256', 8)) + ' ' + 
    CONVERT(TIME, RIGHT('20161212093256', 6))

但這會引發錯誤:

數據類型date和varchar在add運算符中不兼容

我怎樣才能在這兩個日期和時間部分datetime格式?

首先獲取日期組件並將其轉換為DATETIME ,然后獲取時間組件並將其轉換為DATETIME 最后, 添加兩個結果:

SELECT 
    CONVERT(DATETIME,LEFT('20161212093256', 8)) +
    CONVERT(DATETIME,
        LEFT(RIGHT('20161212093256', 6), 2) + ':' +
        SUBSTRING(RIGHT('20161212093256', 6), 3, 2) + ':' +
        RIGHT(RIGHT('20161212093256', 6), 2)
    )

為了進一步說明,結果第一次轉換是日期組件:

2016-12-12 00:00:00.000

第二個轉換是時間組件,但是當您將其轉換為DATETIME它會將其添加到0日期或'1900-01-01' ,因此結果為:

1900-01-01 09:32:56.000

然后,添加兩個DATETIME以獲取:

2016-12-12 09:32:56.000

要擺脫ms組件:

SELECT 
    CONVERT(DATETIME,LEFT('20161212093256', 8)) +
    CONVERT(DATETIME,
        LEFT(RIGHT('20161212093256', 6), 2) + ':' +
        SUBSTRING(RIGHT('20161212093256', 6), 3, 2) + ':00'
    )

試試這個,

DECLARE @V_STR VARCHAR(20) = '20161212093256'
SELECT  CONVERT(SMALLDATETIME,LEFT(@V_STR,8) +' '+      --date
                SUBSTRING(@V_STR,9,2)+':'+              --hour
                SUBSTRING(@V_STR,11,2)+':'+             --minute
                SUBSTRING(@V_STR,13,2)) AS  DATE_TIME   --second

試試這個

select concat(CONVERT(DATE, LEFT('20161212093256', 8)) , ' ' , CONVERT(TIME,  substring(RIGHT('20161212093256', 6),1,2)+ ':'  + substring(RIGHT('20161212093256', 4),1,2) + ':' +RIGHT('20161212093256', 2)))

以上將顯示毫秒的時間,下面沒有毫秒

select concat(CONVERT(DATE, LEFT('20161212093256', 8)) , ' ' , substring(RIGHT('20161212093256', 6),1,2)+ ':'  + substring(RIGHT('20161212093256', 4),1,2) + ':' +RIGHT('20161212093256', 2))
SELECT STUFF(STUFF(STUFF(STUFF(STUFF('20161212093256', 5, 0, '-'), 8, 0, '-'), 11, 0, ' '), 14, 0, ':'), 17, 0, ':')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM