Создайте «МЕЖДУ / И» -поддерживаемые DATETIME из заданного DATETIME - PullRequest
1 голос
/ 04 января 2012

Я хочу создать две DATETIME переменные, которые можно использовать для проверки с BETWEEN AND, когда в SQL Server 2008 предоставляется только одна DATETIME в хранимой процедуре.

Итак, когда я получаю 2012/12/31 15:32:12 в качестве входных данных, я хочу сгенерировать две новые переменные из них: @from = 2012/12/31 00:00:00 и @to = 2012/12/31 23:59:59.

Эти две переменные используются для проверки, лежат ли записи между ними, то есть находятся ли они в тот же день, что и дата ввода.

Я дурачился, используя CAST и CONVERT, но я не знаю, как манипулировать датами так, как я хочу.

Должен ли я сделать это по-другому? Или есть функции, о которых я не знаю?

Ответы [ 4 ]

4 голосов
/ 04 января 2012

Теперь это независимая версия

declare @from datetime, @to datetime

SET @from = convert(varchar, convert(datetime, '2012/12/31 15:32:12', 111), 112)
SET @to = DATEADD(day, 1, @from)

select * from yourtable where test date >= @from AND date < @to
2 голосов
/ 04 января 2012

Вы можете;

declare @input datetime = '2012/12/31 15:32:12'
declare @from  datetime = dateadd(day, 0, datediff(day, 0, @input))
declare @to    datetime = dateadd(second, -1, dateadd(day, 1, @from))

>>>
2012-12-31 00:00:00.000 2012-12-31 23:59:59.000
1 голос
/ 04 января 2012

Будьте осторожны с точностью на вашем @to. 23: 59: 59.001 является действительной датой, но не будет отображаться в вашем диапазоне, если вы вычтете целую секунду.

Более распространено установить @from и затем использовать <@from + 1 вместо BETWEEN. (Плюс добавляет целые дни в SQL). </p>

0 голосов
/ 04 января 2012

Сначала преобразуйте введенную дату в varchar, используя соответствующий формат даты (в данном случае 111). Для даты добавьте полночный час

Тогда брось свой варчар обратно к дате.

Пример:

SELECT @from = CAST(CONVERT(VARCHAR(10), GETDATE(), 111) AS DATETIME)
      ,@to = CAST(CONVERT(VARCHAR(10), GETDATE(), 111)+' 23:59:59:997' AS DATETIME)

Вот полезная таблица форматов даты и времени с краткими пояснениями.

http://www.sql -server-helper.com / советы / дата-formats.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...