У меня есть таблица с 3 столбцами:
(integer) (integer) (varchar(50))
Month Year Color
1 2019 Blue
1 2019 Yellow
1 2019 Red
2 2019 Blue
2 2019 White
Моя конечная цель - сделать запрос, подобный следующему:
Select Color from table where (cast(concat(Year,'/',Month,'/1') as date)>='01/Jan/2019' and cast(concat(Year,'/',Month,'/1') as date)<'1/Mar/2019')
Я хочу иметь возможность чтобы создать дату из столбцов, которые у меня есть, чтобы сделать запрос в диапазоне дат.
Я попытался сделать дату с помощью этого запроса, но он дает мне эту ошибку:
Select cast(concat(Year,'/',Month,'/1') as date) from table
Conversion failed when converting date and/or time from character string.
Решение:
Это последний запрос, который я использовал для получения дат в финансовом году с октября 2017 года по сентябрь 2018 года.
select distinct(DATEFROMPARTS(y,m,1))
from table
where
(DATEFROMPARTS(y, m, 1) >= cast('2017-10-01' as date)) and (DATEFROMPARTS(y, m, 1) < cast('2018-10-01' as date))
order by DATEFROMPARTS(y,m,1)
Редактировать
Отредактировано для переключения приведения на дату от 10 *
select distinct(DATEFROMPARTS(y,m,1))
from table
where
(DATEFROMPARTS(y, m, 1) >= DATEFROMPARTS(2017, 10, 1)) and (DATEFROMPARTS(y,m, 1) < DATEFROMPARTS(2018, 10, 1))
order by DATEFROMPARTS(y,m,1)