Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > MySQL > default now |
Автор: MeIsGremlin 23.4.2008, 16:15 |
как можно у поля с типом DATETIME сделать по умолчанию ввод текущей даты? |
Автор: Feldmarschall 23.4.2008, 16:36 |
Зависит от версии. В старых нельзя было, а в пятерке что-то намудрили, кажется. Но лично я делаю по-старинке, в запросе. Никаких неудобств при этом не испытываю. |
Автор: skyboy 24.4.2008, 00:34 |
для http://dev.mysql.com/doc/refman/5.0/en/timestamp.html- "DEFAULT CURRENT_TIMESTAMP". и "ON UPDATE CURRENT_TIMESTAMP" или именно для DATETIME надобно? |
Автор: MeIsGremlin 24.4.2008, 01:55 |
Я сделал поле таймстамп и поставил по умолчанию CURRENT_TIMESTAMP. Читал доку, там написано что для datetime нельзя указать в default функцию или выражение. Можно только константу. Вот думал может кто знает как обойти это. Мне в данном случае подойдет TIMESTAMP так как просто надо дату регистрации вносить. А вот если timestamp не подойдет и надо будет использовать именно datetime то не знаю как выкрутиться |
Автор: Feldmarschall 24.4.2008, 07:35 |
Это проблема из тех, которые люди выдумывают себе сами. Откуда здесь надо "выкручиваться"? Что "обойти"? Запрос на добавление записи в таблицу при регистрации пишет программист. И даже если он не знает про функцию CURDATE(), то уж date() в PHP ему известно? И что мешает вписать эту константу не в определение таблицы, а в запрос? |
Автор: Бонифаций 24.4.2008, 15:18 |
А что такого можно делать с datetime чего нельзя с timestamp? |
Автор: MeIsGremlin 24.4.2008, 16:53 | ||
в timestamp ты не укажешь время раньше 1970 года. Добавлено через 1 минуту и 13 секунд
хочу перенести эти обязанности на СУБД |
Автор: Feldmarschall 24.4.2008, 18:47 |
Напиши сторед процедуру. "хочу перенести эти обязанности на СУБД". Это бессмысленное заявление. Желания должны быть осмысленными, а не от левой пятки. А я хочу, чтобы база мне всю страницу в одном запросе возвращала. Опросы, новости, авторизацию, А чо? Убью пару месяцев, и получу желаемое. Останется только один вопрос - з а ч е м. Зачем мне это все. Ты потратил на эту тему уже столько времени, чтобы написать сто запросов с NOW(). И ккоторое мог потратить на куда более важные вещи - оптимизацию, обработку ошибок, нормализацию БД. У тебя БД нормализована? |
Автор: MeIsGremlin 25.4.2008, 00:40 |
Целостность данных должна быть перенесена на СУРБД максимально возможным способом и максимально снята с программы, дабы упростить ее алгоритм. Первичные и вторичные ключи, нормализация, тригеры и все шаги проектирования баз данных должны быть. Да, я могу всю жизнь писать тысячи запросов и продумывать программные алгоритмы корректного добавления и удаления данных, дат, писать парсеры и валидацию так как мне это видней, а могу потратить несколько дней на то чтоб выяснить некоторые вещи которые потом сэкономят мне время, затраты и упростят разработку и сделают ее более правильной и профессиональной, не изобретая каждый раз велосипед. Но тема то не об этом. Если вам нечего добавить, просто промолчите. |
Автор: Feldmarschall 25.4.2008, 08:53 |
Читая столь пафосные тексты от человека, который не может прочесть пару страниц документации, уменя не получается им верить. Неувязочка получается. |
Автор: Бонифаций 25.4.2008, 15:37 |
?? |
Автор: skyboy 25.4.2008, 22:54 |
Бонифаций, ему надо регистрировать людей задним числом ![]() да ради Бога. ставишь MySQL версией выше 5.0 и используешь триггеры. красиво сказал. но непонятно. фанатизм тут излишен. MySQL, к примеру, ничего не знает о GMT сервера, на которой установлена. потому, если ты захочешь сделать распределение нагрузки по серверам, расположенным в разных временных зонах(ну, пример, возможно, и надуманный немного), то твое "время регистрации" надо будет уже предварительно обрабатывать на стороне того же PHP(кто в курсе о используемом GMT). А, значит, твое "максимальное снятие нагрузки с программы" вылезет боком. |