Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать выборку за определнный период даты
 
 автор: B@cZ   (20.10.2005 в 23:53)   письмо автору
 
 

Добрый день всем!
Возникли следующие проблемы:
У меня имеется таблица с информацией, которая регулярно обновляется, в ней имеется поле date (int), в котором я храню дату добавление в формате time(), т.е. Unix time.
Так вот как можно сделать SELECT данных по выбронному промежутку, в данном примере мне необходимо по указанному месяцу и году. т.е. у меня имеется допустим месяц 07, и год 2004, мне необходимо отобразить все данные за 07 месяц 2004 года.
Прошу очень помочь, потому что по зарез нужно, за ранее благодарю.

   
 
 автор: Евгений Петров   (21.10.2005 в 01:28)   письмо автору
 
   для: B@cZ   (20.10.2005 в 23:53)
 

Ну можно высчитывать так:
Берем две даты 01.07.2004 30.07.2004 при помощи ф-ии mktime вычисляем время в секундах и дальше выбираем все что больше или равно первой даты и все что меньше или равно второй. А вообще лучше делайте поле типа TIMESTAMP - занимает как и INT 4 байта а работа с датами заметно упрощается.

   
 
 автор: B@cZ   (21.10.2005 в 01:42)   письмо автору
 
   для: Евгений Петров   (21.10.2005 в 01:28)
 

Довольно сложно и долго, да и где-то нужно хранить числа начала месяца и конца, я думаю есть более рациональные методы, жду cheops :)

   
 
 автор: cheops   (21.10.2005 в 13:12)   письмо автору
 
   для: B@cZ   (21.10.2005 в 01:42)
 

Хм... а почему не используются стандартные временные типы базы данных тогда любо дорого выбирать при помощи временных функций
SELECT * FROM tbl YEAR(date) = 2004 AND MONTH(date) = 7

А так придётся действительно пользоваться решением, предложенным Евгением Петровым.

PS Вопросы, посвященные базам данных, лучше сразу размещать в форуме MySQL

   
 
 автор: B@cZ   (21.10.2005 в 13:16)   письмо автору
 
   для: cheops   (21.10.2005 в 13:12)
 

Это ты имеешь ввиду почему не использовать тип данных timestamp? Тогда можно будет выбирать предложенным тобой методом?

   
 
 автор: cheops   (21.10.2005 в 14:25)   письмо автору
 
   для: B@cZ   (21.10.2005 в 13:16)
 

Да, только вместо timestamp лучше использовать datetime, так как timestamp обновляется автоматически при каждом обновлении записи UPDATE.

   
 
 автор: Евгений Петров   (22.10.2005 в 01:26)   письмо автору
 
   для: cheops   (21.10.2005 в 14:25)
 

То то я смотрю я никак не могу время выстаить нормально. :)))

   
 
 автор: cheops   (22.10.2005 в 01:29)   письмо автору
 
   для: Евгений Петров   (22.10.2005 в 01:26)
 

Это вообще очень хитрый тип, обновляется только первый столбец timestamp, последующие уже нет, кроме того, начиная с MySQL 4.1 меняется его формат - он будет как datetime.

   
 
 автор: Евгений Петров   (22.10.2005 в 18:20)   письмо автору
 
   для: cheops   (22.10.2005 в 01:29)
 

Т.е. первый столбец? Например есть таблица и есть запрос:
+----+----------------+
| id |      time      |
+----+----------------+
| 1  | 00000000000000 |
| 2  | 00000000000000 |
| 3  | 00000000000000 |
| 4  | 00000000000000 |
+----+----------------+

UPDATE tbl SET time = '20051212000000' WHERE id = '2'

Какой станет таблица?

   
 
 автор: cheops   (22.10.2005 в 22:34)   письмо автору
 
   для: Евгений Петров   (22.10.2005 в 18:20)
 

Нет имеется ввиду первый timestamp-столбец, поэтому этот запрос вроде как должен без сюрпризов отработать, а вот если перед time стоит ещё один столбец timestamp - в него будет занесено время обновления записи.

   
 
 автор: Евгений Петров   (22.10.2005 в 23:55)   письмо автору
 
   для: cheops   (22.10.2005 в 22:34)
 

Прикольно, а если бы например в таблице был ещё столбец num int то запрос:
UPDATE tbl SET num = '100' WHERE id = '2'
обновил бы время?

   
 
 автор: cheops   (23.10.2005 в 20:17)   письмо автору
 
   для: Евгений Петров   (22.10.2005 в 23:55)
 

да.

   
 
 автор: B@cZ   (21.10.2005 в 13:12)   письмо автору
 
   для: B@cZ   (20.10.2005 в 23:53)
 

cheops ответь пожалуйста =(

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования