Получить значения между двумя датами - MariaDB версия: 10.1.37 - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь получить значения между двумя датами, в частности, 24 часа

SELECT * 
FROM `transactions` 
WHERE accnum = '1534610376' 
    AND tdate BETWEEN 20190311 AND 20190312 

Этот запрос работает нормально, но я не хочу, чтобы он был на постоянную дату, я проверил и увидел много форматов, но ни один из них не работает. пожалуйста помогите

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Если вы «хотите получать записи только сегодня» - простой способ будет:

WHERE accnum = '1534610376' 
    AND DATE(tdate) = CURRENT_DATE()

Однако - чтобы использовать индекс, столбец не должен быть включен в функцию.Таким образом, эффективный способ будет

WHERE accnum = '1534610376' 
    AND tdate >= CURRENT_DATE()
    AND tdate <  CURRENT_DATE() + INTERVAL 1 DAY

Хороший индекс для этого запроса будет INDEX(accnum, tdate).

0 голосов
/ 12 марта 2019

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

SELECT * 
FROM `transactions` 
WHERE accnum = '1534610376' 
    AND tdate BETWEEN '20190311' AND '20190312'

После этого вы можете определить пользовательскую функцию, например так:

CREATE FUNCTION BetweenDate(@toCompare VARCHAR(30), @rightDate DATE, @leftDate DATE)  
RETURNS TABLE
AS   
BEGIN  
    RETURN (
        SELECT *
        FROM transactions
        WHERE accum = @toCompare AND tdate BETWEEN @rightDATE AND @leftDate
    )
END; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...