Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильный выбор месяца в DATETIME ? / 5 сообщений из 5, страница 1 из 1
26.12.2013, 01:30:01
    #38512703
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный выбор месяца в DATETIME ?
Добрый день.
У меня стойкое ощущение, что вопрос нубский, но самостоятельно решить не смог, увы :(
Есть таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE `media` (
	`mid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Registered media identifier',
	`event` DATETIME NOT NULL COMMENT 'Date and time the media was recorded',
	`type` ENUM('jpg','webm') NOT NULL COMMENT 'Media type',
	`bfn` CHAR(17) NOT NULL COMMENT 'Media base file name',
	`access` INT(10) UNSIGNED NOT NULL COMMENT 'Exclusive uid access',
	PRIMARY KEY (`mid`),
	UNIQUE INDEX `uniqueness` (`event`, `bfn`)
);


И для рендера календаря нужно сначала подгрузить список дней заданного месяца, для которых есть записи.
Я нарисовал запрос
Код: sql
1.
SELECT DISTINCT DAYOFMONTH(event) AS regdays FROM media WHERE (event>='2003-10-01') AND (event<=LAST_DAY('2003-10-01'));


Он работает, но мне он кажется каким-то корявым, так как я не уверен, какое время суток даёт LAST_DAY(), и если он даёт 00:00:00, то записи этого дня не попадут. Как это сделать грамотно?
...
Рейтинг: 0 / 0
26.12.2013, 05:59:00
    #38512739
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный выбор месяца в DATETIME ?
Barvinokтак как я не уверен, какое время суток даёт LAST_DAY(), и если он даёт 00:00:00, то записи этого дня не попадутLAST_DAY() возвращает значение типа DATE, и естественно, там будет 00:00:00. Добавьте (date_add) к нему ещё день и делайте сравнение < вместо <=
...
Рейтинг: 0 / 0
26.12.2013, 08:57:36
    #38512781
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный выбор месяца в DATETIME ?
Или используйте between.
...
Рейтинг: 0 / 0
26.12.2013, 10:38:25
    #38512852
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный выбор месяца в DATETIME ?
Akina, так ТСу нужен не замкнутый (between), а полуоткрытый интервал.
...
Рейтинг: 0 / 0
28.12.2013, 15:45:36
    #38515001
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильный выбор месяца в DATETIME ?
Опять мистика.
Запрос к этой таблице с целью выбрать все события одного дня
Код: sql
1.
SELECT * FROM media WHERE (event>="2003-10-8") AND (event<DATE_ADD("2003-10-8",INTERVAL 1 DAY));


использует индекс
Код: plaintext
1.
id; select_type ;table; type  ;possible_keys; key       ; key_len; ref; rows; Extra
1 ; SIMPLE      ;media; range ;uniqueness   ; uniqueness; 8      ; \N;  63  ; Using where
Такой же запрос с другим днём
Код: sql
1.
SELECT * FROM media WHERE (event>="2004-4-16") AND (event<DATE_ADD("2004-4-16",INTERVAL 1 DAY));


не использует
Код: plaintext
1.
2.
id; select_type; table; type; possible_keys; key; key_len; ref; rows; Extra
1 ; SIMPLE;      media; ALL;  uniqueness;    \N;  \N;      \N;  576;  Using where
добавил force index, но всё-таки хотелось бы понять логику такого решения
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Правильный выбор месяца в DATETIME ? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]