sql 服务器中的字符串到日期时间的转换

String to datetime conversion in sql server

是否可以在 sql 服务器中将 'OCT-20' 转换为“2020/10/01”。我尝试了以下情况,但没有任何运气。

select convert(date, 'OCT-20',103)

----从字符串转换日期and/or时间时转换失败。

alter table MyTable alter column [period] date

----从字符串转换日期and/or时间时转换失败。

我正在使用 sql 服务器 2016。

如果 我们假设该值始终采用 MMM-yy 格式,那么您可以这样做:

SELECT CONVERT(date,'01-' + StringDate,106)
FROM dbo.YourTable;

当然,这有2个缺陷。

  1. 日期使用 2 位数年份,因此 SQL 服务器 可能 假设错误的世纪
  2. 只有当 LOGIN 使用基于英语的语言时它才会工作,否则它将失败。

真正的解决方案是修复你的设计;永远不要将日期(和时间)值存储在 varchar 中,并且当您使用 varchar 作为日期(例如 WHERE 中的文字)时,请使用明确的格式,例如yyyyMMddyyyy-MM-ddThh:mm:ss.nnnnnnn.