У меня есть таблица, которая включает в себя колонки Season и Academic_Year. Academic_Year - тип int. Сезон может быть весной, летом или осенью.манипуляция MS SQL DATE с сезоном года
- Fall 2016 от 1 сентября 2016 года до 31 декабря 2016 года
- Spring 2016 от 1 января 2017 года по 31 марта 2017 (не опечатка - учебный год 2016 от сентября 2016 года по август 2017 года)
- лето 2016 от 1 апреля 2017 года до 31 августа 2017
мне нужно выбрать строки, когда GETDATE() находится между числом дней до и после начала сезона, в псевдокоде
WHERE
(getdate() > 31/3/16 AND getdate() < 31/9/16 AND Season = 'Autumn' AND Academic_Year = 2016)
OR (getdate() > 31/9/16 AND getdate() < 31/1/17 AND Season = 'Spring' AND Academic_Year = 2016)
OR (getdate() > 31/12/16 AND getdate() < 31/4/17 AND Season = 'Summer' AND Academic_Year = 2016)
Моя проблема заключается в создании даты для сравнения с getdate(). Мне нужно объединить строку - '31/3/'- с int - Academic_Year и создать дату.
Решение не должно быть эффективным, но ему необходимо работать с версиями сервера SQL Server 2008 и более поздних версий.
Я не вижу, что ваш псевдо-код имеет отношение к вашему пункту «Моя проблема ...». Можете ли вы привести пример существующих данных и желаемых результатов из этих данных? –
не поможет вам понять, что вы собираетесь делать, когда «Academic_Year» - 2016, но вы в сезоне, который растягивается до 2017 года. – JamieD77
Разверните таблицу, чтобы иметь поле «Season_Start_Date» и «Season_End_Date» , – AHiggins