为什么将日期从nvarchar(max)转换为日期会引发错误?

时间:2019-07-01 12:12:59

标签: sql sql-server sql-server-2012

我有一个这样的日期

21-02-2018 

并使用nvarchar(MAX)

我正在尝试使用

转换为日期
  select (Convert(Date, , 106)) from Certificates

  select (Convert(Date, IssueDate))

,但无法转换。

2 个答案:

答案 0 :(得分:2)

使用try_convert()。但是,我认为您想要的格式为105(dd-mm-yyyy),而不是106(dd mon yyyy):

select try_convert(date, issuedate, 105)

当格​​式不匹配时,它将返回NULL而不是失败。您可以找到以下值:

select issuedate
from certificates
where try_convert(date, issuedate, 105) is null and
      issuedate is not null;

答案 1 :(得分:0)

这通常是服务器期望输入日期的格式。我相信它默认为“月-日-年”(美国)而不是“日-月-年”(英国)

尝试将SET DATEFORMAT DMY放在代码的开头,以提示字符串的第一部分是“天而不是月”。