SQL 服务器如何确定输入日期的格式?

How does SQL Server figure out the entered date's format?

我使用 SQL Server 2014 Developer。假设我有这种情况,我过滤发票的付款日期

select * 
from Invoices 
where PaymentDate > '1/2/2012'

Invoicetable中,PaymentDate格式为2012-01-0800:00:00( YYYY-MM-DD HH:MM:SS )

但是 where 的 RHS 操作数是 1/2/2012 那么,SQL 怎么知道这是 M/D/YYYY 还是 D/M/YYYY 的格式呢?

日期时间没有格式(二进制除外):它们(希望)存储为 datetime 而不是字符串。不要混淆演示和表示。

当您有字符串文字时,'1/2/2012'、SQL 服务器通过您的语言环境进行解释。

始终使用(和导出)ISO 8601 格式的日期的最佳做法 yyyy-MM-dd (yyyyMMdd)。

ISO 8601
What date/time literal formats are LANGUAGE and DATEFORMAT safe?