Как выбрать между двумя периодами месяца и года, например: январь 2018 - январь 2019? - PullRequest
0 голосов
/ 27 мая 2019

Проблема SQL-запроса

select *
from app_contract_hd
where year(created_datetime) between 2018 and 2018 and MONTH(created_datetime)between 4 and 4

Ответы [ 6 ]

1 голос
/ 27 мая 2019

Если ваш столбец 'created_datetime' имеет тип данных 'datetime', вы можете попробовать следующий подход, используя функцию DATEFROMPARTS () :

SELECT *
FROM app_contract_hd
WHERE CONVERT(date, created_datetime) BETWEEN DATEFROMPARTS(2018, 1, 1) AND DATEFROMPARTS(2019, 1, 1)

Кроме того, если вы хотите фильтровать данные по определенному часу, используйте DATETIMEFROMPARTS () :

SELECT *
FROM app_contract_hd
WHERE created_datetime BETWEEN DATEFROMPARTS(2018, 1, 1, 0, 0, 0, 0) AND DATEFROMPARTS(2019, 1, 1, 12, 0, 0, 0, 0)
0 голосов
/ 27 мая 2019

Один из возможных способов с использованием CONCAT и проверка с помощью BETWEEN

SELECT *
FROM app_contract_hd
WHERE CONCAT(YEAR(created_datetime), MONTH (created_datetime)) BETWEEN 201801 AND 201901
0 голосов
/ 27 мая 2019

вы можете попробовать это

SELECT * FROM APP_CONTRACT_HD

WHERE 
(YEAR(CREATED_DATETIME) >=2018 AND MONTH(CREATED_DATETIME)>=1) 

OR
(YEAR(CREATED_DATETIME) <=2019 AND MONTH(CREATED_DATETIME)<=1) 
0 голосов
/ 27 мая 2019

Поскольку у вас есть ВРЕМЯ в поле create_datetime, будет лучше, если вы проверяете верхний диапазон меньше чем +1 день с исходной датой верхнего диапазона

SELECT *
FROM app_contract_hd
WHERE created_datetime >= '20180101'
AND created_datetime < '20180201'
0 голосов
/ 27 мая 2019

Вы можете попробовать простой код:

select *
from app_contract_hd
where '2018-01-01' <= created_datetime and created_datetime < '2019-02-01'
0 голосов
/ 27 мая 2019

, если тип данных Datetime

select * from app_contract_hd
where year(created_datetime) between cast('2018-01-01 00:00:00' as datetime) and  cast('2019-01-31 23:59:59' 
as datetime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...