VARCHAR到DATETIME转换

时间:2015-05-26 05:29:21

标签: sql sql-server

我想在SQL Server 2014中将varchar列转换为datetime。我已尝试以下操作,我可以获得dateminute部分很好,但无法正确获得hour部分。是否可以获得hour部分?

以下是一个例子:

Select
    mt.DatevarcharCol, 
    RIGHT(mt.DatevarcharCol, LEN(mt.DatevarcharCol) - CHARINDEX(',',mt.DatevarcharCol)) AS 'Number to the right of',
    DATEADD(DAY, CAST(  SUBSTRING(mt.DatevarcharCol, 1, charindex(',', mt.DatevarcharCol) - 1)  AS bigint),(CONVERT(datetime,'12/31/1840'))) AS 'Date part',
    ((RIGHT(mt.DatevarcharCol, LEN(mt.DatevarcharCol) - CHARINDEX(',',mt.DatevarcharCol))) % 86400)%3600/60 AS Minute,
    ?? -- calculate hour part 
FROM  dbo.mytable mt

结果

DatevarcharCol Number to the right of Date part           Minute hour
-------------- ---------------------- ------------------- ------ ----
63402,67524    67524                  2014-08-03 00:00:00 45     ??

1 个答案:

答案 0 :(得分:1)

时间是:

(RIGHT(mt.DatevarcharCol, LEN(mt.DatevarcharCol)-CHARINDEX(',',mt.DatevarcharCol)))/60/60%24

秒数将是:

(RIGHT(mt.DatevarcharCol, LEN(mt.DatevarcharCol)-CHARINDEX(',',mt.DatevarcharCol)))%60

另外,我建议您不要在单个列中存储逗号分隔值。相反,将每个值放在自己的列中。