如何在SQL Server 2008中编写特定日期范围和日期时间的SQL查询?

22

我需要编写一个查询,以获取指定日期范围和时间范围内的所有行。

例如,我想查询从2010年9月16日下午5:00到2010年9月21日上午9:00之间的所有行。

对于如何编写此查询,您有任何想法吗?

8个回答

35
SELECT * FROM TABLE
WHERE DATE BETWEEN '09/16/2010 05:00:00' and '09/21/2010 09:00:00'

1
如果存在文化问题(例如您的应用程序在不同的文化中运行),则此语法可能会导致一些问题。如果您遇到问题,可以按照以下格式设置日期:09/16/2010 05:00:00 => 20100916050000' - bahadir arslan
@gs_guy,你说得对,但我们不确定确切的要求,是到上午9点还是到上午10点? - bahadir arslan
@Adrift,20100916050000 格式为24小时制,因此无需添加上午/下午。 - bahadir arslan
@bahadir arslan,如果他想要从早上5点开始的值,你是正确的,但他想要从下午5点开始的值。 - Jeff Ogata
我有类似的情况,需要获取存储在日期字段中的日期,其中月份为JAN或任何其他月份。 我需要查询来执行此操作。 有人能帮忙吗? - Random User
显示剩余5条评论

5

实际上,这对我很有效。

 SELECT * 
 FROM myTable
 WHERE CAST(ReadDate AS DATETIME) + ReadTime BETWEEN '2010-09-16 5:00PM' AND '2010-09-21 9:00AM'

3
您可以尝试这个方法:
SELECT * FROM MYTABLE WHERE DATE BETWEEN '03/10/2014 06:25:00' and '03/12/2010 6:25:00'

2
use DBName

select *
from TABLE_NAME A
where A.date >= '2018-06-26 21:24' and A.date <= '2018-06-26 21:28';

1
DATE(readingstamp) 
BETWEEN '2016-07-21' 
AND '2016-07-31' 
AND TIME(readingstamp)
BETWEEN '08:00:00'
AND '17:59:59'

只需简单地分离日期和时间的转换


0

请记住,美国的日期格式与英国不同。使用英国格式,应该是,例如:

--                                  dd/mm/ccyy hh:mm:ss     
dbo.no_time(at.date_stamp) between '22/05/2016 00:00:01' and '22/07/2016 23:59:59' 

0

这个怎么样?

SELECT Value, ReadTime, ReadDate
FROM YOURTABLE
WHERE CAST(ReadDate AS DATETIME) + ReadTime BETWEEN '2010-09-16 17:00:00' AND '2010-09-21 09:00:00'

编辑:根据楼主的要求输出结果 ;-)


谢谢,但我需要以相同的格式返回结果集,即“Value”,“ReadTime”,“ReadDate”(我不想合并日期和时间)。 - Zubair
@eumiro,如果我想要获取每个日期的所有行,无论该天记录是否存在于数据库中,该怎么办?问候。 - Sracanis

-2
"SELECT Applicant.applicantId, Applicant.lastName, Applicant.firstName, Applicant.middleName, Applicant.status,Applicant.companyId, Company.name, Applicant.createDate FROM (Applicant INNER JOIN Company ON Applicant.companyId = Company.companyId) WHERE Applicant.createDate between  '" +dateTimePicker1.Text.ToString() + "'and '"+dateTimePicker2.Text.ToString() +"'";

这是我所做的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接