Sql server SQL Server中的设置日期格式错误

Sql server SQL Server中的设置日期格式错误,sql-server,Sql Server,在SQL Server 2014中运行此语句时,我遇到了以下情况: set dateformat ymd; select cast('1315/06/31' as date ) “1315/06/31”是波斯历法 我收到了这个: 错误:从转换日期和/或时间时转换失败 字符串 但如果我运行这个: set dateformat ymd; select cast('1394/07/21' as date ) 它将返回正确的值 有人能解释一下为什么在第一种情况下我会出错吗?六月不是只有30天吗?我有

在SQL Server 2014中运行此语句时,我遇到了以下情况:

set dateformat ymd;
select cast('1315/06/31' as date )
“1315/06/31”是波斯历法

我收到了这个:

错误:从转换日期和/或时间时转换失败 字符串

但如果我运行这个:

set dateformat ymd;
select cast('1394/07/21' as date )
它将返回正确的值


有人能解释一下为什么在第一种情况下我会出错吗?

六月不是只有30天吗?我有一种感觉,但在不同的日历上。它等于“1936年9月22日”,SQL Server使用公历,而在公历中六月没有31天,因此转换失败。第二个有效,因为七月有第21天。您需要使用另一种数据类型来存储波斯日历中的日期,或者根据公历日期存储日期,并在需要时进行转换(通常在表示层中,但有一些功能可以实现)。感谢的Radu是,您的解释是正确的。我有一个varchar文件,其中包含不同格式的波斯语和希腊语日期。我想使它们的格式相同,但在一些数据上我收到了这个错误。你有什么建议可以让我把所有的格式都做得一样吗?