sql - 在 SQL Server 2005 中按日期/时间查询

标签 sql sql-server sql-server-2005 tsql

我有一个如此简单的问题,我觉得问这个问题很愚蠢。我不敢相信我在这件事上遇到了麻烦。

我有一个名为“Orders”的表。 “Orders”有一个名为“DateOrdered”的小日期时间字段。我需要在特定日期获得所有“订单”。我尝试了以下但没有成功:

SELECT * FROM Orders WHERE [DateOrdered]=2010-06-01

SELECT * FROM Orders WHERE [DateOrdered]='2010-06-01'

SELECT * FROM Orders WHERE [DateOrdered]=CAST('2010-06-01' AS smalldatetime)

我做错了什么?我不敢相信我什至会问这个问题。

最佳答案

第一个查询将日期与数字 2003 进行比较(2010 减 6 减 1) 转换成日期 '1905-06-27' .第二个和第三个查询适用于精确的日期值(即具有 00:00 时间分量),并且是等效的。

您的 smalldatetime 值中是否包含时间部分?在这种情况下,您可以在一个时间间隔内获取值:

SELECT * FROM Orders WHERE DateOrdered >= '2010-06-01' 
                       and DateOrdered < '2010-06-02'

注意 >= 的使用和 <而不是 between关键字,以排除任何可能具有精确值 2010-06-02 的记录.

关于sql - 在 SQL Server 2005 中按日期/时间查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833279/

相关文章:

performance - 测量执行 t-sql 查询所需的时间

sql - 在 SQL Server 中对 NVARCHAR(MAX) 列建立索引

SQL Server 2005 获取任何一年中任何月份的第一个和最后一个日期

sql - psql:案例用法

sql - 快速介绍如何使用oracle xml数据类型

SQL 表键值对到 XML

sql-server - sp_executeSQL 和超过 2000 个字符的语句

具有多个数字的 MySQL DB 显示为行

php - 在php中的sql更新查询中使用保留字会覆盖整个表

sql - 如何检查 SQL Server 日期时间列是否为空?