我在选择两个日期之间遇到问题。我试图从SQL Server数据库中选择数据,但结果不是我想要的。有人可以帮我吗?
我有4条来自数据库的记录,所有记录都格式化为GeneralDate
order_date
---------------------------
2018-07-17 07:10:40.000 AM
2018-07-17 07:10:40.000 AM
2018-07-16 07:59:23.000 AM
2018-07-16 07:59:23.000 AM
这是代码
SELECT order_date
FROM ORDER_RECORDS
WHERE order_date >= '2018-07-16 08:59:23.000 AM'
AND order_date < '2018-07-16 08:59:23.000 AM'
采样日期来自DateTimePicker1.Value
。
显示的查询返回零结果,因为只有日期为true,时间为false。如您所见,数据库记录的起始时间为07:59:23.000 AM,而获取数据的查询起始时间为08:59:23.000 AM
另一个示例查询
SELECT order_date
FROM ORDER_RECORDS
WHERE order_date >= '2018-07-16 03:59:23.000 AM'
AND order_date < '2018-07-16 08:59:23.000 AM'
由于查询从03:59:23.000 AM开始,这会返回两行结果
这是结果
2018-07-16 07:59:23.000 AM
2018-07-16 07:59:23.000 AM
我想要的是在两个日期之间获取数据并忽略时间。
答案 0 :(得分:5)
您需要将日期时间转换为日期
从ORDER_RECORDS WHERE订单中选择订单日期> = CAST('2018-07-16 08:59:23.000 AM'DATE)AND order_date
更新:
SELECT order_date
FROM ORDER_RECORDS
WHERE CAST(order_date AS DATE) BETWEEN CAST('2018-07-16 08:59:23.000 AM' AS DATE)
AND CAST('2018-07-16 08:59:23.000 AM' AS DATE)
更新-日期时间比较
DECLARE
@StartDT DATETIME = CAST('2018-07-16 08:59:23.000 AM' AS DATE),
@EndDT DATETIME = DATEADD(DAY, 1, CAST('2018-07-16 08:59:23.000 AM' AS DATE))
SELECT order_date
FROM ORDER_RECORDS
WHERE order_date >= @StartDT AND order_date < @EndDT