VARCHAR到DATE

时间:2016-11-09 13:42:06

标签: sql sql-server tsql datetime

我有这样的样本数据:

SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/1997', 3), 120);

当我执行此操作时,我得到的错误是这样的:

  

Msg 241,Level 16,State 1,Line 1
  从字符转换日期和/或时间时转换失败   字符串。

然后我删除了1997年的前2个字符

SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/97', 3), 120);

它给出了结果集如下:

Date
1997-10-11  

所以它从DD / MM / YY格式转换为YYYY-MM-DD

很好但是为什么它已经花了1997年,如果我要给17,它会给2017年。 如果我给37,它将给2037,如果我给67,它给1967。

最后DD / MM / YYYY到YYYY-MM-DD格式怎么样

3 个答案:

答案 0 :(得分:1)

指定四位数年份时,您需要使用103

SELECT CONVERT(DATE, '11/10/1997', 103)
-- 1997-10-11 (DATE)

如果您想将日期转换回字符串,请再次转换:

SELECT CONVERT(VARCHAR(10), CONVERT(DATE, '11/10/1997', 103), 120)
-- 1997-10-11 (VARCHAR)

样式的完整列表 is available here

答案 1 :(得分:0)

而不是3你可以双关语103。 所以: SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/1997', 103), 120);将返回1997-10-11

答案 2 :(得分:0)

你能试试吗?

declare @datechar as char(19) ='11/10/1997'

select FORMAT(convert(date,@datechar,103),'yyyy-MM-dd')