【发布时间】:2015-08-27 09:26:27
【问题描述】:
我有一个varchar 列,其中包含日期dd.mm.yyyy 之类的字符串,我需要将其转换为仅具有不同格式的相同字符串,例如yyyy.mm.ddT00:00:000
已解决:第一次测试:
SELECT REPLACE(CONVERT(varchar, CAST(table.DATE AS datetime), 126),'-','.') AS date
FROM tabletest.DBO.TABLE
结果:
我得到 5 个值(超过 1000 个)和 msg:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
已解决:第二次测试:
SELECT REPLACE(CONVERT(varchar, (RIGHT(GREMPG1.DAT,4)+SUBSTRING(GREMPG1.DAT,3,4)+LEFT(GREMPG1.DAT, 2) + ), 126),'-','.') AS Datums
FROM tabletest.DBO.GREMPG1
找不到关于如何获得第二部分的解决方案。
也许有一些最短的方法来转换列记录格式?
谢谢。
已编辑:
第二个查询:
- 旧值:01.03.2014
- 新值:2014.03.01
- 需要获取:2014.03.01T00:00:00
【问题讨论】:
-
请发布一些示例数据
-
那么您需要输出为 varchar 还是日期格式?
-
尝试使用
datetime2而不是datetime。前者可以存储超出datetime范围的日期 -
SQL Server 的版本是什么?你有多少行?我想其中一个字符串是错误的。例如:
30.02.2012。或者转换不正确尝试将15.02.2012转换为mm.dd.yyyy -
@elly,正如我在回答中所建议的那样,“只有前 5 个结果”可能意味着第六行包含错误数据......或者您的系统采用 mm.dd 而不是 dd.mm
标签: sql-server date type-conversion