SQL在两个日期和时间之间进行选择

时间:2017-05-29 07:26:51

标签: sql-server sql-server-2008

我需要从昨天下午6:59到每天晚上7:00选择所有数据。

要选择的数据是datetime字段。 日期不是常数,因为我将每天使用此查询生成日期。

我正在使用MS SQL Server 2008.这是一个示例测试数据。

Sample DateTimeField Data

你能告诉我怎么做吗

SELECT transaction
FROM test_tbl
WHERE ...

4 个答案:

答案 0 :(得分:3)

您可以在WHERE子句中使用包含日期时间字段的列,如果您的列是transactionDatTim,则查询如下所示:

DECLARE @tempDate DATE -- note that this date and not DateTime
DECLARE @tempStartDateTime DATETIME, @tempEndDateTime DATETIME
SET @tempDate = GETDATE()
SET @tempEndDateTime = DATEADD(hh,19,CAST(@tempDate AS datetime))
SET @tempStartDateTime  = DATEADD(mi,-1,DATEADD(d,-1,@tempEndDateTime))


--the query
SELECT transaction
FROM test_tbl
WHERE transactionDatTim BETWEEN @tempStartDateTime  AND @tempEndDateTime  

没有临时变量的短版本将是

--the query
SELECT transaction
FROM test_tbl
WHERE transactionDatTim BETWEEN 
   DATEADD(mi,-((24-19)*60+1),CAST(CAST(GETDATE() AS DATE) AS datetime))  
    AND 
   DATEADD(hh,19,CAST(CAST(GETDATE() AS DATE) AS datetime))   

答案 1 :(得分:0)

你可以尝试这个,看看

select transaction from test_tb1 where transaction between '2017-05-02 18:59:00' and '2017-05-03 19:00:00';

答案 2 :(得分:0)

您可以在"之间使用"查找两个结束日期(包括)之间的记录的子句:

TRY:

SELECT transaction
FROM test_tbl

where datetime between 
cast(convert(varchar, DATEADD(dd,-1, GETDATE()), 101)+' 6:59 PM' as datetime) --to get yesterday's date and time at 6:59 *hardcoded*
and 
cast(convert(varchar, getdate(), 101)+' 7:00 PM' as datetime) --to get current date at 7pm

答案 3 :(得分:0)

  

ttp *twoTimetable的日期(创建日期)中选择id created_at,   在date('2018-11-26')和date('2018-11-28')和时间(created_at)之间   在“ 12:00”和“ 12:40”之间