|
|
|
| Добрый день всем!
Возникли следующие проблемы:
У меня имеется таблица с информацией, которая регулярно обновляется, в ней имеется поле date (int), в котором я храню дату добавление в формате time(), т.е. Unix time.
Так вот как можно сделать SELECT данных по выбронному промежутку, в данном примере мне необходимо по указанному месяцу и году. т.е. у меня имеется допустим месяц 07, и год 2004, мне необходимо отобразить все данные за 07 месяц 2004 года.
Прошу очень помочь, потому что по зарез нужно, за ранее благодарю. | |
|
|
|
|
|
|
|
для: B@cZ
(20.10.2005 в 23:53)
| | Ну можно высчитывать так:
Берем две даты 01.07.2004 30.07.2004 при помощи ф-ии mktime вычисляем время в секундах и дальше выбираем все что больше или равно первой даты и все что меньше или равно второй. А вообще лучше делайте поле типа TIMESTAMP - занимает как и INT 4 байта а работа с датами заметно упрощается. | |
|
|
|
|
|
|
|
для: Евгений Петров
(21.10.2005 в 01:28)
| | Довольно сложно и долго, да и где-то нужно хранить числа начала месяца и конца, я думаю есть более рациональные методы, жду cheops :) | |
|
|
|
|
|
|
|
для: B@cZ
(21.10.2005 в 01:42)
| | Хм... а почему не используются стандартные временные типы базы данных тогда любо дорого выбирать при помощи временных функций
SELECT * FROM tbl YEAR(date) = 2004 AND MONTH(date) = 7
|
А так придётся действительно пользоваться решением, предложенным Евгением Петровым.
PS Вопросы, посвященные базам данных, лучше сразу размещать в форуме MySQL | |
|
|
|
|
|
|
|
для: cheops
(21.10.2005 в 13:12)
| | Это ты имеешь ввиду почему не использовать тип данных timestamp? Тогда можно будет выбирать предложенным тобой методом? | |
|
|
|
|
|
|
|
для: B@cZ
(21.10.2005 в 13:16)
| | Да, только вместо timestamp лучше использовать datetime, так как timestamp обновляется автоматически при каждом обновлении записи UPDATE. | |
|
|
|
|
|
|
|
для: cheops
(21.10.2005 в 14:25)
| | То то я смотрю я никак не могу время выстаить нормально. :))) | |
|
|
|
|
|
|
|
для: Евгений Петров
(22.10.2005 в 01:26)
| | Это вообще очень хитрый тип, обновляется только первый столбец timestamp, последующие уже нет, кроме того, начиная с MySQL 4.1 меняется его формат - он будет как datetime. | |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 01:29)
| | Т.е. первый столбец? Например есть таблица и есть запрос:
+----+----------------+
| id | time |
+----+----------------+
| 1 | 00000000000000 |
| 2 | 00000000000000 |
| 3 | 00000000000000 |
| 4 | 00000000000000 |
+----+----------------+
|
UPDATE tbl SET time = '20051212000000' WHERE id = '2'
|
Какой станет таблица? | |
|
|
|
|
|
|
|
для: Евгений Петров
(22.10.2005 в 18:20)
| | Нет имеется ввиду первый timestamp-столбец, поэтому этот запрос вроде как должен без сюрпризов отработать, а вот если перед time стоит ещё один столбец timestamp - в него будет занесено время обновления записи. | |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 22:34)
| | Прикольно, а если бы например в таблице был ещё столбец num int то запрос:
UPDATE tbl SET num = '100' WHERE id = '2'
| обновил бы время? | |
|
|
|
|
|
|
|
для: Евгений Петров
(22.10.2005 в 23:55)
| | да. | |
|
|
|
|
|
|
|
для: B@cZ
(20.10.2005 в 23:53)
| | cheops ответь пожалуйста =( | |
|
|
|