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个缺陷。
- 日期使用 2 位数年份,因此 SQL 服务器 可能 假设错误的世纪
- 只有当
LOGIN
使用基于英语的语言时它才会工作,否则它将失败。
真正的解决方案是修复你的设计;永远不要将日期(和时间)值存储在 varchar
中,并且当您使用 varchar
作为日期(例如 WHERE
中的文字)时,请使用明确的格式,例如yyyyMMdd
或 yyyy-MM-ddThh:mm:ss.nnnnnnn
.
是否可以在 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个缺陷。
- 日期使用 2 位数年份,因此 SQL 服务器 可能 假设错误的世纪
- 只有当
LOGIN
使用基于英语的语言时它才会工作,否则它将失败。
真正的解决方案是修复你的设计;永远不要将日期(和时间)值存储在 varchar
中,并且当您使用 varchar
作为日期(例如 WHERE
中的文字)时,请使用明确的格式,例如yyyyMMdd
或 yyyy-MM-ddThh:mm:ss.nnnnnnn
.