MySQl дата между двух дат
Подскажите пожалуйста.
В mysql дату храню не правильно, в виде varchar. Раньше для дня,месяца и года были поля отдельно и необходимый поиск по двух датам работал отлично. Теперь надо хранить дату в одном поле. Конечно с помощью php не особо трудно вывести даты которые в промежутке двух дат, но хотелось бы sql запросом это делать. Можете подсказать. Т.е. на сервер передается дата начала и дата окончания надо вывести все даты из этого промежутка. Почему использую varchar, потому что не хочет записывать дату в поле с типом date, а записывает как то так 0000:00 00 Разбираться особо не хотелось и сделал по простому. |
Я бы все-таки посоветовал разобраться с датой. Стандартный формат хранения даты для полей соответствующих типов, таких как DATE, такой: yyyy-mm-dd. Соответственно, при записи в базу даты вида dd.mm.yyyy ее надо сначала привести в "правильный" формат. А уж затем выбор диапазона дат будет простейшим делом.
|
Можно хранить UNIX TIMESTAMP даты - тогда просто выборка вроде date < MAX AND date > MIN. Еще и сэкономить получится.
|
Цитата:
Цитата:
|
mycoding,
[SQL] BEGIN SET @last_date = begin_date; DROP TABLE IF EXISTS temp_calendar; CREATE TEMPORARY TABLE temp_calendar( date DATE NOT NULL, KEY days (date) ) ENGINE = MyIsam; WHILE @last_date <= end_date DO insert into temp_calendar(date) values(@last_date); SET @last_date = DATE_ADD(@last_date, interval 1 day); END WHILE; END [/SQL] Это хранимка, вызываешь ее перед SQL запросом, и в таблице temp_calendar будут даты из промежутка, по завершению запроса таблица удалится. Вызывается с параметрами "дата начала" и "дата окончания" |
DooMer, а если ТС спросит, как осуществить самоэвтаназию... ты ему тоже все подробно расскажешь?
|
Цитата:
|
x-yuri,
просто самому в свое время пришлось писать, была готовая, почему бы не поделится ? |
Цитата:
|
Часовой пояс GMT +3, время: 09:13. |