SQL Server如何计算输入日期的格式?

时间:2018-12-22 07:10:37

标签: sql sql-server tsql

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

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

Invoice表中,PaymentDate的格式为 2012-01-08 00:00:00 ( YYYY-MM-DD HH:MM:SS )

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

1 个答案:

答案 0 :(得分:6)

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

当您使用字符串文字'1/2/2012'时,SQL Server会通过您的语言环境进行解释。

始终使用(和导出)ISO 8601格式yyyy-MM-ddyyyyMMdd)日期的最佳实践。

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