Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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,  07:35)
Это проблема из тех, которые люди выдумывают себе сами. Откуда здесь надо "выкручиваться"? Что "обойти"?
Запрос на добавление записи в таблицу при регистрации пишет программист. И даже если он не знает про функцию CURDATE(), то уж date() в PHP ему известно? И что мешает вписать эту константу не в определение таблицы, а в запрос?

хочу перенести эти обязанности на СУБД

Автор: Feldmarschall 24.4.2008, 18:47
Напиши сторед процедуру.

"хочу перенести эти обязанности на СУБД". Это бессмысленное заявление. Желания должны быть осмысленными, а не от левой пятки.
А я хочу, чтобы база мне всю страницу в одном запросе возвращала. Опросы, новости, авторизацию, 
А чо? Убью пару месяцев, и получу желаемое. Останется только один вопрос - з а ч е м. Зачем мне это все.
Ты потратил на эту тему уже столько времени, чтобы написать сто запросов с NOW().
И ккоторое мог потратить на куда более важные вещи - оптимизацию, обработку ошибок, нормализацию БД. У тебя БД нормализована?

Автор: MeIsGremlin 25.4.2008, 00:40
Целостность данных должна быть перенесена на СУРБД максимально возможным способом и максимально снята с программы, дабы упростить ее алгоритм. Первичные и вторичные ключи, нормализация, тригеры и все шаги проектирования баз данных должны быть. Да, я могу всю жизнь писать тысячи запросов и продумывать программные алгоритмы корректного добавления и удаления данных, дат, писать парсеры и валидацию так как мне это видней, а могу потратить несколько дней на то чтоб выяснить некоторые вещи которые потом сэкономят мне время, затраты и упростят разработку и сделают ее более правильной и профессиональной, не изобретая каждый раз велосипед. Но тема то не об этом. Если вам нечего добавить, просто промолчите.

Автор: Feldmarschall 25.4.2008, 08:53
Читая столь пафосные тексты от человека, который не может прочесть пару страниц документации, уменя не получается им верить. Неувязочка получается. 

Автор: Бонифаций 25.4.2008, 15:37
Цитата(MeIsGremlin @  24.4.2008,  16:53 Найти цитируемый пост)
в timestamp ты не укажешь время раньше 1970 года.


Цитата(MeIsGremlin @  24.4.2008,  01:55 Найти цитируемый пост)
так как просто надо дату регистрации вносить


??

Автор: skyboy 25.4.2008, 22:54
Бонифаций, ему надо регистрировать людей задним числом  smile 
Цитата(MeIsGremlin @  24.4.2008,  23:40 Найти цитируемый пост)
Целостность данных должна быть перенесена на СУРБД

да ради Бога. ставишь MySQL версией выше 5.0 и используешь триггеры.
Цитата(MeIsGremlin @  24.4.2008,  23:40 Найти цитируемый пост)
максимально возможным способом

красиво сказал. но непонятно. 
Цитата(MeIsGremlin @  24.4.2008,  23:40 Найти цитируемый пост)
максимально снята с программы

фанатизм тут излишен.
MySQL, к примеру, ничего не знает о GMT сервера, на которой установлена. потому, если ты захочешь сделать распределение нагрузки по серверам, расположенным в разных временных зонах(ну, пример, возможно, и надуманный немного), то твое "время регистрации" надо будет уже предварительно обрабатывать на стороне того же PHP(кто в курсе о используемом GMT). А, значит, твое "максимальное снятие нагрузки с программы" вылезет боком.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)