带日期范围的 SQL 查询

标签 sql sql-server sql-server-2008

我正在尝试使用下面的 SQL 查询从表中获取记录。

SELECT Code,Description FROM Table
WHERE ID= 1 AND FromDate >= '2010-02-14' AND ToDate <= '2012-03-14'

即使该日期存在记录,查询也不会返回任何内容。

ID HID HCode HDescription FromDate            ToDate 
-------------------------------------------------------------------
1  3   H8    New Year     2012-03-14 12:38:00 2012-03-14 12:38:00

请给我一个合适的解决方案。感谢您的宝贵时间!!

最佳答案

试试这个:

declare @dayAfter datetime     --let take 1 day after

set @dayAfter = DateAdd(day,1,'20120314')

SELECT Code,Description FROM Table
WHERE ID= 1 AND 
FromDate >= '20100214' AND 
ToDate <  DateAdd(day, DateDiff(day, 0, @dayAfter ), 0)

附:

DateAdd(day, DateDiff(day, 0, @dayAfter ), 0)会将时间重置为 00:00

所以你需要desired EndTime < begining of the day after

关于带日期范围的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9783137/

相关文章:

java - 如何使用jooq的fetchMap返回的map?

sql-server-2008 - Cereal - quartz

sql-server - 什么是行锁、页锁和表锁?当它们被收购时?

SQL Server : flatten results from One to Many query

sql - SELECT * FROM 表,用他们的名字替换 FK

sql - 当匹配语句时使用 MERGE 在其他表中进行 UPDATE 和 INSERT?

sql - 如何从 table1 中选择前 500 行并将它们插入到 table2?

sql-server - CREATE DATABASE 最终克隆了一个旧数据库

sql-server - DT_Decimal 数据类型 截除小数

sql-server - 使用不同的增量值更新多个记录