SQL 服务器如何确定输入日期的格式?
How does SQL Server figure out the entered date's format?
我使用 SQL Server 2014 Developer。假设我有这种情况,我过滤发票的付款日期
select *
from Invoices
where PaymentDate > '1/2/2012'
在Invoice
table中,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?
我使用 SQL Server 2014 Developer。假设我有这种情况,我过滤发票的付款日期
select *
from Invoices
where PaymentDate > '1/2/2012'
在Invoice
table中,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?