Редактирование Datetime

Тема в разделе "PHP программирование", создана пользователем Alexygen, 13 апр 2007.

  1. Alexygen

    Alexygen Гость

    Подскажите, пожалуйста, как можно записать в базу в поле типа datetime, например: $d="$dd3-$dd2-$dd1 $dd3:$dd4:00";
    Зарание ОГРОМНОЕ СПАСИБО!!!
     
  2. Holger Dee Assuran

    Holger Dee Assuran Гость

    Код (Text):
    $id; # Указатель строки в базе
    $date=date('Y-m-d H:i:s') # Получаем текущую дату
    $query="update `tablename` set `datetime`=$date where id=$id";
    $result=mysql_query($query);
    if (mysql_affected_rows() < 1)
    {
    echo "Не удалось обновить запись";
    return false;
    }
    else
    {
    echo "Запись обновлена";
    return true;
    }
    Соответственно:
    • Дата сгенерированая функцией date() имеет вид - 'YYYY-MM-DD HH:mm:ss'
    • tablename - имя таблицы в базе данных
    • datetime - имя поля DATETIME в таблице tablename
    • id - указатель строки в таблице. Может быть дополнен/заменен дополнительными соответствиями через конструкцию and
    • Функция mysql_affected_rows() возвращает количество измененных строк
     
  3. Alexygen

    Alexygen Гость

    да но как мне внести в таблицу произвольную дату, т.е. свою?
    Поле date имеет тип datetime поэтому необходимости узнавать время нет, т.к. оно автоматически его ставит!
     
  4. Artexoid

    Artexoid Гость

    Для: Alexygen

    Смени тип поля date (datetime -> varchar) и записывай туда хоть римскими.
     
  5. Alexygen

    Alexygen Гость

    а как тогда сделать нормальную сортировку по дате, если поле datetime -> varchar будет иметь вид $dd3-$dd2-$dd1 $dd3:$dd4:00?
     
  6. Artexoid

    Artexoid Гость

    Для: Alexygen

    Ну сделай 2 поля. одно DateTime, 2-е Char. В одно записывай дату в виде DateTime и делай по нему сортировку, в другое записывай в виде Char хоть Римскими как я сказал :) и выводи его.

    Вообще решение какое-то "лобовое" получилось :), но работать будет...

    Если чесно я даже не понял что это "$dd3-$dd2-$dd1 $dd3:$dd4:00" вообще такое :)...
     
  7. Holger Dee Assuran

    Holger Dee Assuran Гость

    Я так понял что это формат метки даты и времени.
    База MySQL хранит метки даты и времени именно в таком формате как ты описал, то есть "год-месяц-день час:мин:сек". Что бы записать туда свою дату нужно просто передать ее в это поле в описаном формате.
    То-есть запрос будет выглядеть так:
    Код (Text):
    $datetime="2007-04-16 11:08:00";
    $query="insert into `tablename` values (`datetime`='$datetime')";
    Что ты имеешь в виду под "нормальной" сортировкой по дате?
    Обычно что бы отсортировать данные по какому либо столбцу нужно указать это в запросе:
    Код (Text):
    $query="select * from `tablename` where `datetime` < '2007-04-16 11:08:00' and `datetime` > '2006-04-16 11:08:00' order by `datetime` asc";
    Этот запрос выберет все записи из таблицы за последний год и отсортирует их в порядке возрастания, то-есть от старых к новым. Если нужно отсортировать их в обратном порядке - вместо asc нужно написать desc

    ЗЫ:А вобще вся эта инфа есть в книжках и в сети.
     
  8. GOsha

    GOsha Гость

    Я вообще пишу дату в таком виде: 20071213
    ГГГГММДД
    А сортировку делаю как простое число. Потом разбираю и вывожу в нормальном виде...
    И наоборот...
     
  9. Holger Dee Assuran

    Holger Dee Assuran Гость

    Дату тоже можно сортировать по возрастанию и убыванию. Но, конечно, можно как и GOsha - дело вкуса. Собственно я, зачастую, принимаю дату от пользователя в виде трех чисел, собираю их как и GOsha, только в том виде что я описал раньше, и пишу в базу. Если нужно, напимер в какой нибудь форме, вывести селектор даты - разбираю и вывожу три SELECTа.
     
  10. kazim09

    kazim09 Гость

    Для: Alexygen

    записывай в формате datetime а результаты выводи как хочешь:
    Код (Text):
    <?php
    $date = date('Y-m-d H:i:s'); # в БД пишем в таком виде
    $time = strtotime($date);   # переводим дату в метку времени
    print date('d. M. Y', $time);# выводим в удомном для нас виде
    ?>
     
Загрузка...

Поделиться этой страницей