У меня есть следующие данные, установленные в тестовой таблице:Невозможно установить условие в SQL Server 2008 R2
create table test
(
columndate date,
columntime datetime
)
insert into test values('2014-01-01','22:00:00')
insert into test values('2014-01-02','06:00:00')
insert into test values('2014-01-03','23:00:00')
insert into test values('2014-01-04','05:00:00')
insert into test values('2014-02-01','10:00:00')
insert into test values('2014-02-01','13:00:00')
insert into test values('2014-02-01','15:00:00')
insert into test values('2014-02-01','05:00:00')
columndate columntime
------------------------------------
2014-01-01 1900-01-01 22:00:00.000
2014-01-02 1900-01-01 06:00:00.000
2014-01-03 1900-01-01 23:00:00.000
2014-01-04 1900-01-01 05:00:00.000
2014-02-01 1900-01-01 10:00:00.000
2014-02-01 1900-01-01 13:00:00.000
2014-02-01 1900-01-01 15:00:00.000
2014-02-01 1900-01-01 05:00:00.000
Теперь я хочу, чтобы показывать только в ночное время в результате, например:
columndate columntime
-----------------------------------
2014-01-01 1900-01-01 22:00:00.000
2014-01-02 1900-01-01 06:00:00.000
2014-01-03 1900-01-01 23:00:00.000
2014-01-04 1900-01-01 05:00:00.000
2014-02-01 1900-01-01 05:00:00.000
за что я пытаюсь следующий сценарий:
select * from test
where columndate between '2014-01-01' and '2014-02-01'
and cast(columntime as time) between '06:00:00' and '23:00:00'
Примечание: Я не буду получать отчет о времени 05:00:00
Но когда я использую следующий сценарий:
select * from test
where columndate between '2014-01-01' and '2014-02-01'
and cast(columntime as time) between '05:00:00' and '23:00:00'
Примечание: я получить ожидаемый результат, но я получаю запись времени 06:00:00
также, который я не хочу, чтобы показать.
Как это исправить?
Я не понимаю ... вы хотите, только события с 23:00 до 06:00 (т.е. в одночасье)? –
@JoachimIsaksson, Yup! – Meem
Howcome is '2014-01-01 1900-01-01 22: 00: 00.000' в ваш желаемый результат, тогда, когда это не после 23:00? Опечатка? –