【问题标题】:How do I select Properly Using "between" in SQL Server?如何在 SQL Server 中正确使用“介于”?
【发布时间】:2018-07-23 00:57:38
【问题描述】:

我在选择两个日期时遇到问题。我试图从 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

显示的查询返回零个结果,因为只有日期为真而时间为假。如您所见,数据库的记录从上午 07:59:23.000 开始,获取数据的查询开始于上午 08:59:23.000

另一个示例查询

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 开始

这是结果

2018-07-16 07:59:23.000 AM
2018-07-16 07:59:23.000 AM

我想要的是在两个日期之间获取数据并忽略时间。

【问题讨论】:

  • 你在这里使用什么应用程序语言?
  • 视觉基础 2017
  • 请针对您的样本数据提供一个示例查询,然后显示预期的输出。您的问题有多种解释。
  • 你为什么是not using a parameterized command string?让服务器决定输入是否需要转义或引用;提供实际的DateTime 参数值,而不是看起来像日期的字符串。
  • 最安全最简单的是col &gt;= '20180716' AND col &lt; '20180717'

标签: sql sql-server vb.net


【解决方案1】:

您需要将日期时间转换为日期

SELECT order_date FROM ORDER_RECORDS WHERE order_date >= CAST('2018-07-16 08:59:23.000 AM' AS 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

【讨论】:

  • 使用 cast 后,结果也为零。
  • 如果order_date类型也是datetime,也需要转换
  • 我试图从 ORDER_RECORDS WHERE order_date >= CAST('2018-07-16 08:59:23.000 AM' AS DATE) AND order_date
  • 尝试
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
相关资源
最近更新 更多