Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.02.2011, 10:56
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

MySQl дата между двух дат
Подскажите пожалуйста.
В mysql дату храню не правильно, в виде varchar.
Раньше для дня,месяца и года были поля отдельно и необходимый поиск по
двух датам работал отлично.
Теперь надо хранить дату в одном поле.
Конечно с помощью php не особо трудно вывести даты которые в промежутке двух дат, но хотелось бы sql запросом это делать.

Можете подсказать.

Т.е. на сервер передается дата начала и дата окончания
надо вывести все даты из этого промежутка.

Почему использую varchar, потому что не хочет записывать дату в поле с типом date, а записывает как то так 0000:00 00 Разбираться особо не хотелось и сделал по простому.
Ответить с цитированием
  #2 (permalink)  
Старый 05.02.2011, 11:12
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Я бы все-таки посоветовал разобраться с датой. Стандартный формат хранения даты для полей соответствующих типов, таких как DATE, такой: yyyy-mm-dd. Соответственно, при записи в базу даты вида dd.mm.yyyy ее надо сначала привести в "правильный" формат. А уж затем выбор диапазона дат будет простейшим делом.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #3 (permalink)  
Старый 05.02.2011, 19:55
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Можно хранить UNIX TIMESTAMP даты - тогда просто выборка вроде date < MAX AND date > MIN. Еще и сэкономить получится.
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2011, 22:16
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от mycoding
Почему использую varchar, потому что не хочет записывать дату в поле с типом date, а записывает как то так 0000:00 00 Разбираться особо не хотелось и сделал по простому.
надо было закрутить винт с правосторонней резьбой. Не разобрался, как его закрутить, поэтому сделал по-простому - забил молотком

Сообщение от B@rmaley.e><e
Можно хранить UNIX TIMESTAMP даты - тогда просто выборка вроде date < MAX AND date > MIN. Еще и сэкономить получится.
ну зачем, если в mysql для этого есть специальные типы столбцов, м?
Ответить с цитированием
  #5 (permalink)  
Старый 11.02.2011, 12:44
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

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 будут даты из промежутка, по завершению запроса таблица удалится. Вызывается с параметрами "дата начала" и "дата окончания"
Ответить с цитированием
  #6 (permalink)  
Старый 11.02.2011, 18:54
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

DooMer, а если ТС спросит, как осуществить самоэвтаназию... ты ему тоже все подробно расскажешь?
Ответить с цитированием
  #7 (permalink)  
Старый 11.02.2011, 18:56
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Сообщение от x-yuri Посмотреть сообщение
DooMer, а если ТС спросит, как осуществить самоэвтаназию... ты ему тоже все подробно расскажешь?
Offtop: некоторым я бы рассказал...
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #8 (permalink)  
Старый 14.02.2011, 09:43
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

x-yuri,
просто самому в свое время пришлось писать, была готовая, почему бы не поделится ?
Ответить с цитированием
  #9 (permalink)  
Старый 14.02.2011, 15:23
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от DooMer
просто самому в свое время пришлось писать, была готовая, почему бы не поделится ?
продолжая параллель: просто самому в свое время пришлось самоубиваться. Но тем не менее откачали и в результате остался инвалидом на всю жизнь. Почему бы не посоветовать?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с запросом ... MySQL Arfey Серверные языки и технологии 9 16.06.2010 12:55