SQL-запрос год / месяц / неделя до даты - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время я разрабатываю платформу, в которой мне нужно 3 SQL-запроса для возврата всех записей за год / месяц / неделю до даты.

Запросы должны работать динамически без жестко закодированных дат. Пожалуйста, имейте меня в виду, если я хочу разделить их на 3 вопроса, я думаю, что они очень релевантны, и поэтому я поместил все 3 здесь:)

1: год к дате

Я пробовал этот SQL-запрос в соответствии с этим вопросом о дате до даты, но я получаю сообщение об ошибке:

Неправильный счетчик параметров при вызове собственной функции 'DATEDIFF'

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, coins_daily_volume
FROM coins_daily
WHERE coins_daily_date BETWEEN DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0) AND GETDATE()
ORDER BY coins_daily_date ASC

2: месяц к дате

Я пробовал разные вещи с помощью функции month, но не смог понять, как добиться / построить правильный SQL-запрос на месяц.

3: неделя до даты

Честно говоря, я понятия не имею, с чего начать.

Работает нормально, возвращаясь 1 год

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, coins_daily_volume
FROM coins_daily
WHERE coins_daily_date >= DATE_ADD(NOW(),INTERVAL -1 YEAR
ORDER BY coins_daily_date ASC

Я надеюсь, что кто-то может помочь или указать мне правильное направление:)

С наилучшими пожеланиями!

1 Ответ

0 голосов
/ 05 сентября 2018

GETDATE () для MsSQL.Используйте NOW () для текущей даты или curdate () для текущей даты.

Для текущего года:

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, 
coins_daily_volume
FROM coins_daily
WHERE YEAR(coins_daily_date) = YEAR(NOW())
AND coins_daily_date <= NOW()
ORDER BY coins_daily_date ASC

Для текущего месяца:

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, 
coins_daily_volume
FROM coins_daily
WHERE YEAR(coins_daily_date) = YEAR(NOW())
AND MONTH(coins_daily_date) = MONTH(NOW())
AND coins_daily_date <= NOW()
ORDER BY coins_daily_date ASC

Для недели:

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, 
coins_daily_volume
FROM coins_daily
WHERE YEAR(coins_daily_date) = YEAR(NOW())
AND WEEK(coins_daily_date) = WEEK(NOW())
AND coins_daily_date <= NOW()
ORDER BY coins_daily_date ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...