2014-02-20 3 views
19

Как вы можете получить сегодняшнюю дату и преобразовать ее в формат 01/mm /yyyy и получить данные из таблицы с месяцем поставки 3 месяца назад? Таблица уже содержит месяц доставки 01/mm/yyyy.sql запрос для получения данных за последние 3 месяца

+0

'WHERE Convert (DATE, TableColumn)> = GETDATE() - 90' ?? Вы что-нибудь пробовали? –

+2

Почему вы храните дату в виде символьной строки? Вы должны исправить таблицу. –

+0

Месяц создается в таблице с даты поставки в формате 01/мм/гггг. Это делается для удобства использования позже для php. Поэтому, чтобы получить определенный тип доставки за последние 3 месяца, я думал получить сегодняшнюю дату и преобразовать ее в формат 01/мм/гггг и вернуть ее с месяцем доставки в таблице, чтобы получить минимум 3 месяца, включая данные текущего месяца , – user88866050

ответ

53
SELECT * 
FROM TABLE_NAME 
WHERE Date_Column >= DATEADD(MONTH, -3, GETDATE()) 

Предложенный метод Mureinik будет возвращать те же результаты, но делать это таким образом, ваш запрос может извлечь выгоду из любых индексов на Date_Column ,

или вы можете проверить последние 90 дней.

SELECT * 
FROM TABLE_NAME 
WHERE Date_Column >= DATEADD(DAY, -90, GETDATE()) 
+6

На самом деле вы можете сделать 'GETDATE() - 90' вместо' DATEADD (DAY, -90, GETDATE()) ' –

+4

@huMptyduMpty Но 3 месяца не обязательно 90 дней, потому что месяцы могут иметь 30 или 31 день (или даже 28 или 29, если принять во внимание февраль) – AlexB

6

Я хотел бы использовать datediff, а не заботиться о преобразования форматов:

SELECT * 
FROM mytable 
WHERE DATEDIFF(MONTH, my_date_column, GETDATE()) <= 3 
7

Последние версии MySQL не поддерживают DATEADD вместо этого использовать синтаксис

DATE_ADD(date,INTERVAL expr type) 

Чтобы получить последние 3 месяца использования данных,

DATE_ADD(NOW(),INTERVAL -90 DAY) 
DATE_ADD(NOW(), INTERVAL -3 MONTH) 
+1

Не вопрос mysql ... – Migol

+2

'DATE_ADD' работал отлично! 'DATEADD', похоже, не существует в MySQL. – Erik

0

Последние 3 месяца

SELECT DATEADD(dd,DATEDIFF(dd,0,DATEADD(mm,-3,GETDATE())),0) 

Сегодня

SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0) 
Смежные вопросы