我使用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
格式?
答案 0 :(得分:6)
日期时间没有格式(二进制以外的格式):(希望)它们存储为datetime
而不是字符串。不要将演示与表示混淆。
当您使用字符串文字'1/2/2012'
时,SQL Server会通过您的语言环境进行解释。
始终使用(和导出)ISO 8601格式yyyy-MM-dd
(yyyyMMdd
)日期的最佳实践。
请参见ISO 8601
What date/time literal formats are LANGUAGE and DATEFORMAT safe?