DATETIME mySQL автоматическая установка

Тема в разделе "Базы данных", создана пользователем casinolot, 10 апр 2012.

Модераторы: latteo
  1. casinolot

    casinolot

    Регистр.:
    22 окт 2010
    Сообщения:
    547
    Симпатии:
    84
    Не могу понять какую опцию выбрать чтобы при создании записи автоматом данный тип
    заполнялся.
    Но некоторые рекомендуют установить тип поля TIMESTAMP -- тогда по умолчанию при создании записи поле будет содержать значение текущего времени,но абсолютно никаких гарантий, что системное время на сервере баз данных будет то же, что на сервере приложения или фиксировать клиентское время явным образом.
    Кто еще что может предложить
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    PHP:
    mysql_query("INSERT INTO table SET `id`='".$id."',..... `datetime`='".time()."', .....");
     
  3. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    79
    Код:
    INSERT INTO table(id, date_field) VALUES (1, NOW())
     
  4. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    79
    А вообще, что вы имели ввиду про "но абсолютно никаких гарантий, что системное время на сервере баз данных будет то же, что на сервере приложения"?
    :smmne: Надо синхронизировать время. Почти во всех проектах отталкиваюсь от времени на сервере БД и почти не использую время на вебсервере (кроме логов, разумеется).
     
  5. goter

    goter Писатель

    Регистр.:
    6 апр 2012
    Сообщения:
    2
    Симпатии:
    0
    Код:
    mysql_query("INSERT INTO table SET `id`='".$id."',..... `datetime`='".time()."', ....."); 
    Лучше всегда использовать данный код. Иногда в коде нужно использовать time(). Если еще в запросах к базе использовать NOW() , то в варианте размещения базы не на локалхост, мы имеем два значения времени.
     
  6. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    79
    Человек спросил, как сделать так, чтобы сохранял время автоматически, а вы его агитируете делать вручную и заранее неправильно
     
  7. shaen

    shaen Постоялец

    Регистр.:
    23 июн 2011
    Сообщения:
    51
    Симпатии:
    9
    Я может не совсем понял вашу задачу Вы пытаетесь сделать часовые пояса для каждого пользователя в зависимости от его место положения тогда:

    $razn = 3;// для Москвы
    echo gmdate("H:i:s",time()+($razn*3600));

    Посмотрите еще: Перейти по ссылке

    если просто добавлять дату тогда так:

    для поля datetime (int) в базе
    mysql_query("INSERT INTO table SET `id`='".$id."',..... `datetime`='".time()."', .....");

    для поля datetime (datetime) в базе

    mysql_query("INSERT INTO table SET `id`='".$id."',..... `datetime`='".date('Y-m-d H:i:s')."', .....");

    если нужно автоматически добавлять тогда:
    Перейти по ссылке
     
  8. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Если так, то задача изначально неправильно поставлена... при общении игроков с разными часовыми поясами возникнет путаница... Записывать всегда нужно время сервера, а вот выводить его пользователю уже опираясь на часовой пояс пользователя...
     
  9. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    79
    При наличии прямых рук никакой путаницы не возникнет.
    Время сервера к данным никак не относится, особенно, часовой пояс, установленный на сервере.

    MySQL прекрасно работает с часовыми поясами.
    В начале генерации страницы пользователю выполняешь sql запрос:
    Код:
    set timezone = 'MSK'
    или
    Код:
    set timezone = 'GMT'
    или любой другой пояс,
    и пользователь увидит все времена в своем часовом поясе и без плясок с бубном.