#php
#php
Вопрос:
я повторяю что-то вроде следующего в файле (test.php ).
....
201105
201106
201107
201108
201109
201110
....
код выводит его:
$months = 10; //count of months
$date = date_create( 'now' );
echo date_format( $date, 'Y M' );
for ( $i = 0; $i < $months; $i ) {
date_sub( $date , date_interval_create_from_date_string( '1 months' ) );
echo date_format( $date, 'Y M' );
}
выше приведен архив за год и месяц. теперь я хочу, чтобы, когда пользователь нажимал на год-месяц. затем на текущей странице отображается заголовок каждой статьи со списком, относящимся к году-месяцу. я знаю, что должен использовать переданное значение в моем запросе к базе данных, чтобы выбрать название каждой статьи.время создания каждой статьи такое 15806927473
. но я не знаю, как передать значение. когда пользователь нажимает на год-месяц. и использовать переданное значение в моем sql-запросе.
Спасибо.
код запроса sql:
$result=mysql_query("select title from node where a > created_time > b ");
как упорядочить a и b. и сделать так, чтобы время передаваемого значения сравнивалось с этим стилем 15806927473
.
базой данных является mysql.
Ответ №1:
158...
Значением, скорее всего, является временная метка unix, которая представляет собой количество секунд с 1 января 1970 года. Вы не указываете, в какой базе данных вы находитесь, поэтому не могу помочь вам должным образом. Однако, предполагая, что вы используете MySQL, вы можете легко конвертировать временные метки и значения даты / времени с помощью FROM_UNIXTIME()
и UNIX_TIMESTAMP()
.
Вы не указываете, как генерируются значения вашего года / месяца, но не особенно сложно выполнить некоторые манипуляции со строками, чтобы превратить ‘201105’ в ‘2011-05-01 00:00:00’, которые вы можете передать в MySQL в качестве значения даты / времени для сравнения в базе данных.
Что касается вашей конструкции a > c > b, это синтаксическая ошибка. Вы бы хотели, чтобы это выглядело как:
... WHERE (a > created_time) AND (a > b)
Комментарии:
1. я думаю, что a, b известны. потому что a — это первый день месяца.b — последний день месяца. но последний день каждого месяца может отличаться. как их передать?
2. Не делайте это на основе дней месяца. Попробуйте сделать что-то вроде
where (Month(created_time) = 5) and (Year(created_time) = 2011)
, что избавляет от необходимости вычислять фактические дни.3. MySQL имеет очень хороший выбор функций для обработки даты / времени / форматирования: dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html