我有一个表格table_a
,其中的列field_b
格式是字符串。
在那个领域,他们写了例如01/06/2012
。
我需要将其更改为2012-06-01
我无法更改字段类型等。
SELECT CONVERT(DATE,CONVERT(DATEtime,'01/06/2012',103))
更多示例请点击这里
update [YourDB].[dbo].[YourTable]
set [YourColumn] = convert(nvarchar(10), convert(datetime,[YourColumn]), 126)
select cast(cast('01/06/2012' as DATE) as varchar(10))
大多数 SQL 引擎都有一个 substring() 函数。将其与 concat() 一起使用来创建新字符串:
(伪代码)
update table_a set field_b=concat(substring(field_b, 6, 4), '-', substring(field_b, 3, 2), '-', substring(field_b, 0, 2))
有关详细信息,请参阅 SQL Server 手册。
select convert(datetime,'01/06/2012',103)
这是可行的答案,并且可以避免本地化问题:
select cast(cast(convert(DATETIME, '01/06/2012', 103) as DATE) as NVARCHAR(10))
您需要使用 103 作为格式,然后将其转换为日期(以切断时间),然后将其转换为 varchar。