Как правильно добавлять дату в MySql и с каким форматом лучше работать если нужно число, месяц и год. добавляю отсюда: HTML: <form action="addaf.php" method="get"> <select name="dy"> <--! Год --> <option>2007 <option>2008 <option>2009 <option>2010 </select> <select name="dm"> <--! Месяц --> <option>1 <option>2 <option>3 ... <option>11 <option>12 </select> <select name="dd"> <--! День --> <option>1 <option>2 <option>3 ... <option>28 <option>29 <option>30 <option>31 </select> <br> <input type="submit"> </form> это вообще так делается-то?? а то я первый раз с датой работаю addaf.php : PHP: <?php // $dy, $dm, $dd - полученные переменные, правильно? ... $str_sql_query = "INSERT INTO afisha (dat) VALUES ('???что здесь надо написать????????')"; if (!mysql_query($str_sql_query, $link)) { echo "Не могу добавить данные"; exit(); } echo "Данные успешно добавлены"; ... ?> база была такая: [sql] CREATE TABLE afisha (......., dat DATE,......) [/sql] Добавляется естественно не только дата.. просто не стал постить информацию, не относящуюся к делу. Заранее всем спасибо
не понял, как я их могу использовать в своём случае (как понятно из названия таблицы это афиша, и я добавляю в неё новые объявления с заданной датой) но всё же спасибо! пригодится в следующий раз
http://ru2.php.net/mktime int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] ) Подставляешь аргументами твои числа, в базу добавляешь это число(которое возвратит функция), при выводе берёшь из базы обычное число и выводишь как в мане - echo date("M-d-Y", mktime(...));
А я в простом "unsigned int" храню и мне пока хватает Нужны, просто если бы их не было никто бы не умер, все бы делали как предлогает Angerslave (и многие другие, иногда даже я)
Лично я предпочтение отдаю mktime(), считаю ее более удобной.все операции выполняю относительно ее...и в бд тоже храню эти секунды...
Как вариант, можно и в поле DATETIME хранить время и форматировать средствами мускуля, можно хранить секунды и форматировать средствами php. Тут уже дело вкуса имхо.
Дело вашей педантичности, теоретически (с точки зрения оголтелого педанта) "правильно" было бы хранить DATETIME Хотя бы потому что сайт это в принципе и есть БД, а Апач и РНР это только средство его конвертации в HTML и отдачи клиенту, из чего исходит что если БД предоставляет какие-то фишки то надо ими пользоваться. С другой стороны очень многие хранят дату в простом INT и никто пока от этого вроде не умер...
Смотря как подходить к проблеме. Имхо, всё-таки сайт не оболочка для доступа к БД, а некое информационное пространство, которое для хранения информации использует БД. Пользователю же всё равно как там в БД хранится инфа, хоть в XML-документах, лишь бы снаружи нормально выглядело. Так что обе точки зрения правильные.
Я пользуюсь специальными типами - DATE, DATETIME, TIMESTAMP. Если нужно задать время/дату, когда идет обновление/добавление в базу - использую NOW() (для первых двух типов).
Обе точки зрения конечно правильные, но есть одно но Если подходить к ситуации проще (и считать что сайт это просто "оболочка доступа к БД"): 1 - программировать будет проще 2 - (как следствие 1-го) ПО будет надёжнее 3 - (как следствие 2-го) стоимость продукта выше 4 - разработка быстрее 5 - (как следствие 4-го) затраты на разработку ниже 6 - (как следствие 5-го) программист будет богаче
согласен с Vladsonом во многом, кроме (6). не очень отчётливо просматривается, панимашь, зависимость... а что касаемо даты... дни рождения, например, и некоторые другие события, случалось, происходили и до 1970-го года... timestamp, кстати, хранится в виде integer unsigned
stas_t, дату рождения, конечно, удобнее хранить в DATE, ибо врядли человек скажет во сколько точно он родился
(6) это уже слишком далеко от сабжа, уж слишком много других параметров влияет на (6) по этому (6) возможно так и не случится (хотя хотелось бы)
Вот тоже столкнулся, испарил себе весь моск. Вот как вы, граждане, засовываете дату-время в DATETIME? Пробовал с разных сторон - ничего не хочет, даже строчку запроса копировал из пхпмайадмин - не хляет. А в простой DATE или простой TIME не хочет записывать. [sql]INSERT INTO comments (id, when, userid, userip, texts, parentid, type) VALUES (NULL, NOW(), 1, '0.0.0.0', 'Попробуем разок', 11, 'news')[/sql] тут он ругается.
я храню отдельно год месяц и день, так проще. А вообще в чём проблема записать строку в поле формата DATE?! Привели строку к нужному формату и записали.
Уважаемый, вы просто как-то криво запрос составили - всё прекрасно в DATETIME вставляеться, он прекрасно понимает NOW() или CURRENT_TIMESTAMP - что угодно, что выдаёт дату в формате YYYY-MM-DD hh:ii:ss или unix timestamp