我需要从昨天下午6:59到每天晚上7:00选择所有数据。
要选择的数据是datetime
字段。
日期不是常数,因为我将每天使用此查询生成日期。
我正在使用MS SQL Server 2008.这是一个示例测试数据。
你能告诉我怎么做吗
SELECT transaction
FROM test_tbl
WHERE ...
答案 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”之间