SQL 不会根据确切日期提取记录

Ham*_*han 1 sql sql-server sql-server-2005 date exact-match

我导出了记录,我想知道在特定日期导出了哪条记录。这是行不通的。如果我查询它,这是数据。

* comapny Name *     * date exported *
ABC Company, Inc    2011-08-01 15:44:52.857
XYZ Company, Inc    2011-08-01 15:44:52.857
Run Code Online (Sandbox Code Playgroud)

我发出此命令,它不会检索精确匹配项

select companyname, exporteddate from mytable exporteddate = '2011-08-01' <- does not work
select companyname, exporteddate from mytable exporteddate like '%2011-08-01%' <-- tried this variation too and many other, did not work
Run Code Online (Sandbox Code Playgroud)

有趣的是 >=, >, <= 有效。真正的问题是什么?导出的日期声明为日期时间字段。

select companyname, exporteddate from mytable exporteddate >= '2011-08-01' <- this works
Run Code Online (Sandbox Code Playgroud)

我使用的是 Windows XP、MS-SQL 2005 SP3(不完全但接近)。

Mar*_*ith 5

= '2011-08-01'只会匹配datetimes该日期的午夜(即您拥有的值为 的任何行2011-08-01 00:00:00.00)。

进行查询的最佳方法是 where exporteddate >= '20110801' and exporteddate < '20110802'

这是可讨论的,避免模棱两可的datetime格式,并且比BETWEEN结束条件为 on的替代方案更好,20110801 23:59:59.997因为它依赖于有关datetime数据类型最大精度的实现细节,如果您datetime2在稍后阶段转移到新的 SQL Server 2008数据类型,该数据类型将中断.