[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как написать запрос по полю date
Страницы: 1, 2
SoMeOnE
Всегда хранил дату в int. Перешел на date. Вроде бы это правильней. К тому же как я понел есть удобные методы поиска интервалов при данном хранениии. С мануалом что то не очень разобрался. Как можно вытащить из базы все новости относящиеся к 2012 году допустим.
Я думал такие вещи в WHERE пишут. В мануале все запросы в SELECT прописаны.
Как это сделать через ADDDATE. Может кто обяснить, пример показать. Спасибо.
rooor
WHERE DATE_FORMAT(`название_поля`, '%Y') = 2012 // Если тип поля DATETIME
WHERE FROM_UNIXTIME(`название_поля`, '%Y') = 2012 // Если тип поля INT
Winston
WHERE YEAR(`date`) = 2012
SoMeOnE
А вообще это парвильно да хранить дату в поле типа date или timestamp?
SlavaFr
+ timestamp есть во всех БД и тебе не прийдется в случае замены БД специально подстраивать в SQL эти поля.

- отсуствие специфических для конкретной БД фишек, которые помогают оптимально и удобно работать с временем.

Если уверен, что будеш дальше работать с Mysql, то конечно имеет смысл использовать предложенный ими времменной формат.


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
SoMeOnE
ok. спасибо
inpost
WHERE `date` BETWEEN '2012-01-01 00:00:00' AND '2012-12-31 23:59:59' - вот за 2012 год. smile.gif Теперь можно любой отрезок подставлять.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
SoMeOnE
inpost, спасибо, но
Winston - а метод легче всего)))

Я правда хотел через ADD_DATE тольо не разобрался в нем.
То что приблизительно вот так
 ADD_DATE('2012', INTERVAL 1 YEAR)

Он мне что то всегда все новости выдает из таблицы...
SlavaFr
Цитата (SoMeOnE @ 7.11.2012 - 11:53)
inpost, спасибо, но
Winston - а метод легче всего)))

Я правда хотел через ADD_DATE тольо не разобрался в нем.
То что приблизительно вот так
 ADD_DATE('2012', INTERVAL 1 YEAR)

Он мне что то всегда все новости выдает из таблицы...

1) Да, Вариант от Winston оптимален


2) Функции ADD_DATE в mysql не существует, работай с DATE_ADD smile.gif
3) функция DATE_ADD ожидает в первом параметре DATE -Тип.
2012 = не правилъно, 2012-01-01 = правильно. smile.gif


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
SoMeOnE
SlavaFr
ну я написал неправильно здесь). Вообще запрос делал правильный с синтакстической стороны. Просто он мне всегда возвращал все данные из таблицы, не обращая внимания на год.
SoMeOnE
Эту строку внутри select писал.
SlavaFr
Цитата (SoMeOnE @ 7.11.2012 - 12:57)
Эту строку внутри select писал.

поко не увижу чистый SQL нечем помочь не смогу.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
SoMeOnE
Вот допустим при таком запросе

SELECT
`articles`.`id`, `articles`.`num`, `articles`.`parent`,
`articles`.`url`, `articles`.`date`, `articles`.`title`,
`articles`.`short`, `articles`.`content`, `articles`.`image`,
`articles`.`description`, `articles`.`keywords`,
`pages`.`url` AS `category`,
DATE_ADD('2012-01-01, INTERVAL 1 YEAR')
FROM
`articles` JOIN `pages` ON (`articles`.`parent` = `pages`.`num`)
WHERE
`articles`.`lang` = 'ru' AND
`pages`.`lang` = 'ru' AND
`pages`.`url` = 'news'

выходят и результаты в которых дата = 2010-05-01
inpost
что-то вы не в ту степь забрели. smile.gif
Свернутый текст
Предсказываю следующую фразу, что ты не туда записал, и твой ответ: "я знаю, уже выше об это сказал", а потом: "а зачем тогда выставляешь", - "ну ты же просил показать"... smile.gif


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
SlavaFr
Цитата (SoMeOnE @ 7.11.2012 - 13:47)
Вот допустим при таком запросе

SELECT
`articles`.`id`, `articles`.`num`, `articles`.`parent`,
`articles`.`url`, `articles`.`date`, `articles`.`title`,
`articles`.`short`, `articles`.`content`, `articles`.`image`,
`articles`.`description`, `articles`.`keywords`,
`pages`.`url` AS `category`,
DATE_ADD('2012-01-01, INTERVAL 1 YEAR')
FROM
        `articles` JOIN `pages` ON (`articles`.`parent` = `pages`.`num`)
WHERE
`articles`.`lang` = 'ru' AND
`pages`.`lang` = 'ru' AND
`pages`.`url` = 'news'

выходят и результаты в которых дата = 2010-05-01

Да нет, так конечно это выражение не как не ограничивает твой результат.
Дело в том, что это выражение не находится в WHERE и не выражает не какого условия.


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.