我想在SQL Server 2014中将varchar
列转换为datetime
。我已尝试以下操作,我可以获得date
和minute
部分很好,但无法正确获得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 ??
答案 0 :(得分:1)
时间是:
(RIGHT(mt.DatevarcharCol, LEN(mt.DatevarcharCol)-CHARINDEX(',',mt.DatevarcharCol)))/60/60%24
秒数将是:
(RIGHT(mt.DatevarcharCol, LEN(mt.DatevarcharCol)-CHARINDEX(',',mt.DatevarcharCol)))%60
另外,我建议您不要在单个列中存储逗号分隔值。相反,将每个值放在自己的列中。