Сравните дату, сохраненную как целое число, с датой и временем - PullRequest
0 голосов
/ 31 мая 2019

У меня есть столбец с целым числом типа данных в формате ггггмм (например, 201905).Я хочу проверить, находится ли этот столбец между начальной и конечной датой, то есть:

case 
  when [cov_yyyymm] between [start_dt] and [end_dt] then 'Period1'
  else 'OtherPeriod' 
end

примечание: начальная и конечная даты - дата-время

Я попытался преобразовать Int в дату-время / дату.аналогично, наоборот, от даты к int и все еще не может заставить его работать.

Я ожидаю использовать оператор CASE для сравнения, если целое число находится между двумя датами.

Ответы [ 2 ]

3 голосов
/ 31 мая 2019

Вы можете преобразовать его в дату и время следующим образом:

SELECT CAST(CAST(201905 AS VARCHAR(6)) + '01' AS DATETIME)

И сравнить со столбцами даты и времени, например:

WHERE CAST(CAST(201905 AS VARCHAR(6)) + '01' AS DATETIME) BETWEEN start_dt AND end_dt
0 голосов
/ 01 июня 2019

Ваш период в формате yyyymm, поэтому следующий оператор - еще один возможный подход. Этот подход полезен, когда период и даты начинаются с одного месяца - например, период 201905 и даты 2019-05-03 и 2019-05-20. Добавление дня (первого или последнего дня месяца) к целочисленному периоду (гггг) и сравнение со значениями даты и времени не всегда корректно.

case 
  when [cov_yyyymm] between 
      (YEAR([start_dt])*100 + MONTH([start_dt])) and 
      (YEAR([end_dt])*100 + MONTH([end_dt])) then 'Period1'
  else 'OtherPeriod' 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...