【发布时间】:2020-01-15 16:32:05
【问题描述】:
如何将 varchar(25) 列的值从“JAN02/19”格式的日期转换为“2019-01-02”(YYYY-MM-DD)?
【问题讨论】:
-
每次你认为你已经看到了人们能想到的每一种糟糕的日期格式时......都会有一个新的。 :-P
SELECT CONVERT(DATE, SUBSTRING('JAN02/19', 4, 2) + STUFF('JAN02/19', 4, 3, ''), 6)。如果可以,请将其保留为DATE(或DATETIME),不要不尝试再次将其格式化回数据库中的字符串——这应该是客户的责任。 -
我强烈建议将列的类型更改为
datetime,而不是将日期存储为字符串。然后你可以让任何显示日期选择格式。 -
你为什么认为 string 指的是 2019 年?毕竟艾萨克·阿西莫夫出生于 1920 年。你有一个非常严重的问题,没有任何借口。您应该尽快将该字段更改为
date或datetime2 -
@JeroenMostert 成功了,感谢您关于不格式化回字符串的建议。
-
@DStanley 感谢您提出将列数据类型更改为日期的建议。
标签: sql sql-server 2-digit-year y2k