【发布时间】:2021-04-10 18:44:32
【问题描述】:
我在名为 Date 的列中有值作为 mmddyy 形式的 nvarachar 数据类型,并且想要将值转换为 yyyy-mm-dd 形式的日期数据类型,我可以使用什么 sql colde 来转换价值。
示例 02121955 -> 1955-02-12
【问题讨论】:
我在名为 Date 的列中有值作为 mmddyy 形式的 nvarachar 数据类型,并且想要将值转换为 yyyy-mm-dd 形式的日期数据类型,我可以使用什么 sql colde 来转换价值。
示例 02121955 -> 1955-02-12
【问题讨论】:
你可以使用datefromparts():
select datefromparts(right(str, 4), left(str, 2), substring(str, 3, 2))
或者将其重构为 yyyymmdd 格式并进行转换:
select convert(date, left(right(str, 4) + str, 8))
Here 是一个 dbfiddle。
【讨论】:
我发现了一个和你类似的问题已经解决了:https://stackoverflow.com/a/39139155/14940878
以下是根据您的要求更改的代码:
declare @date varchar(max)='02121955'
select convert(varchar(8),cast(CONCAT(SUBSTRING(@date,5,4),'/',SUBSTRING(@date,1,2),'/',SUBSTRING(@date,3,2)) as date),112)as [YYYYMMDD]
您需要将每个字段合并为一个,然后将其转换为日期时间。
SUBSTRING(@date,5,4) - Takes the last four characters.
SUBSTRING(@date,1,2) - Takes the first two.
SUBSTRING(@date,3,2) - Takes the two in the middle.
【讨论】:
【讨论】: