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(不完全但接近)。
= '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数据类型,该数据类型将中断.
| 归档时间: |
|
| 查看次数: |
3893 次 |
| 最近记录: |