【发布时间】:2014-10-20 15:13:59
【问题描述】:
我有一个表格,其列 fetchtime 采用以下整数格式:
20100903063110
20110403022433
20130203142033
20130103153313
等等。那将是日期和时间在一起 (YYYYMMDDHHMISS)
我需要将此列中的所有记录转换为 SQL Server DateTime 格式:YYYY-MM-DD HH:MI:SS
完成后,我想分别提取转换后的日期和时间格式,并将其存储在同一个表的两个新列中。
在寻找这个时,我发现下面提到的 @Andomar 使用子字符串的转换,但无法适应我的要求。
select
convert(datetime, substring(sub.Dt,1,4) + '-' +
substring(sub.Dt,5,2) + '-' +
substring(sub.Dt,7,2) + ' ' +
substring(sub.Dt,9,2) + ':' +
substring(sub.Dt,11,2) + ':' +
substring(sub.Dt,13,2))
from
(select '20100101000000' as Dt) sub
【问题讨论】:
-
convert/substr 有什么问题?它看起来像你想要的那样?
-
虽然该值可能会巧合地存储为数字类型,但出于转换目的,该数字没有有意义的日期/时间表示。为此,它需要被视为一个字符串。现有的方法(从子字符串构造日期/时间)似乎是合理的。
-
@AlexK。谢谢回复。是的,它只转换“20100101000000”值。我如何使用它来转换列中的所有记录?
标签: sql sql-server tsql datetime