我的查询类似于
select * from myTable where [date] < 'YYYY-MM-DD'
然而,sql server正在以YYYY-DD-MM格式解释这个(我认为使用的是YYYY-MM-DD格式,因为它不应该是明确的,但不可理解的情况并非如此!)
知道为什么会发生这种情况会很好(我之前没有使用过SQL服务器,以及处理日期时的最佳做法。
答案 0 :(得分:4)
有三种格式(并且已经很长时间)是明确的。这些是:
YYYYMMDD
YYYY-MM-DD'T'hh:mm:ss
YYYY-MM-DD'T'hh:mm:ss.mil
其他一些格式可能在较新版本的SQL Server上和/或使用较新的datetime2
,date
和time
类型时是明确的,但是您可以始终依赖上面的3.所以只需要使用YYYYMMDD
,或者,如果可能的话,当你想处理日期时,避免将字符串传递给SQL Server。
(或者,选项3,使用CONVERT
并准确指定您实际使用的格式)
答案 1 :(得分:0)
我首先要检查两件事:
如何将此日期传递给SQL Server(可能取决于日期 客户端上的设置 - 即Windows设置)。我看到了一个代码(在VB6中) 通过日期,如2014-10-08&#39; 2014年10月8日或8月10日 2014年取决于服务器设置(波兰语,英国,美国)。
SQL Server如何识别以字符串形式传递的日期 - 即2014-10-08
(类似问题)。