powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Date Default
14 сообщений из 14, страница 1 из 1
Date Default
    #39930124
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. MySQL 5.7 В таблице поле типа Date. Можно ли как-то указать ему дефолтовое значение - текущую дату? В полях типа DateTime прекрасно работает Default Now(), CurDate() почему-то он уже не понимает...
...
Рейтинг: 0 / 0
Date Default
    #39930139
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Gur
Можно ли как-то указать ему дефолтовое значение - текущую дату?

Нет. Версия маловата. Это на 8+ можно будет использовать выражение.

Используйте триггер:
Код: sql
1.
2.
3.
4.
5.
CREATE TRIGGER set_default_to_date
BEFORE INSERT
ON tablename
FOR EACH ROW
SET NEW.datefield = COALESCE(NEW.datefield, CURRENT_DATE);
...
Рейтинг: 0 / 0
Date Default
    #39930146
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, жалко. Я хотел обойтись без триггера. А в описании индекса тоже никаких подобных конструкций не существует? Мне, собственно, нужна дата со временем и уникальный индекс, который включает в себя только эту дату без времени. В принципе, я меняю данные хранимыми процедурами, просто хотелось немного уменьшить их код
...
Рейтинг: 0 / 0
Date Default
    #39930201
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, вот как вы все любите спросить одно, когда нужно совсем другое..

https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html
https://dev.mysql.com/doc/refman/5.7/en/create-table-secondary-indexes.html
...
Рейтинг: 0 / 0
Date Default
    #39930208
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, я спрашивал именно то, что мне нужно. Заметь - не то, что ты себе представляешь, а то, что мне действительно нужно. Самым простым способом добиться того, что мне нужно, без написания триггера или лишнего кода в хранимке - это либо создать уникальный индекс на обрезанную от времени дату - что, как я понимаю, невозможно, - либо держать второе поле типа Date, в которое при записи обрезать от времени основной DateTime и строить индекс по нему. Альтернатива этому - либо триггер, либо совсем обойтись без индекса (благо, таблица небольшая) и проверять уникальность в коде процедуры. В общем-то, проблема решена и ответы на мои вопросы получены. Тема закрыта, спасибо
...
Рейтинг: 0 / 0
Date Default
    #39930212
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Gur
создать уникальный индекс на обрезанную от времени дату - что, как я понимаю, невозможно
Как я понимаю, ссылки, которые дал Akina, говорят об обратном.
...
Рейтинг: 0 / 0
Date Default
    #39930219
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, ты плохо прочел мой предыдущий пост. В ссылках как раз показывается, как создать второе поле нужного мне типа, я не говорил, что это невозможно. Немного неудобно держать в таблице лишнее поле, но в принципе это решает мою проблему, как я и написал. Создать индекс на предварительно обработанное поле - что-то типа Create Unique Undex I1 On Table1(Date(Table1.FieldDateTime)) - насколько я понял из этих ссылок, невозможно... Либо я чего-то не нашел
...
Рейтинг: 0 / 0
Date Default
    #39930263
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Gur,

Полноценные FBI появились только в 8 версии MySQL.
Но в версии 5.7 можно сделать генерируемое поле, даже без его физического хранения, и по этому полю построить индекс. Что есть практически тот же FBI, за исключением того, что в SELECT * станет больше полей. Но это не считаю критичным, т.к. в боевых запросах звездочку писать и без этого плохая практика.
...
Рейтинг: 0 / 0
Date Default
    #39930304
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Gur
Либо я чего-то не нашел
Да.
Слова VIRTUAL.
...
Рейтинг: 0 / 0
Date Default
    #39930533
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, нет, не упустил. Virtual мне в данном случае вовсе не помогает. Это разновидность второго поля, которое - физически или виртуально - сидит в таблице и в коде мне приходится по мере надобности обращаться то к одному, то к другому. Этого я хотел бы избежать, но не получилось. Я уже упоминал, что таблица у меня небольшая, будет это поле физическим или виртуальным - мне абсолютно фиолетово. А конструкция `dtDateOnly` Date As (Date(`dtDate`)) Not Null Comment 'Дата документа' в Create Table меня вполне устраивает и прекрасно работает. Я очень надеялся, что в MySQL есть какая-то конструкция, которая позволяет строить индекс по обработанному предварительно полю из таблицы - как я писал, что-то типа Create Unique Undex I1 On Table1(Date(Table1.FieldDateTime)), не трогая ради этого структуру таблицы вообще.
...
Рейтинг: 0 / 0
Date Default
    #39930609
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S_Gur
Мне, собственно, нужна дата со временем и уникальный индекс, который включает в себя только эту дату без времени.

Нифига не понял (я чайник, да). Если нужна дата со временем, то причем тут поле типа Date? А если есть DateTime, что мешает сделать индекс только по дате?
...
Рейтинг: 0 / 0
Date Default
    #39930663
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paver
А если есть DateTime, что мешает сделать индекс только по дате?
Нежелание товарища создавать вычисляемое поле для индексирования по нему, даже виртуальное. Ну имеет право... об обновлении версии даже заикаться боюсь.
...
Рейтинг: 0 / 0
Date Default
    #39930701
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, обновление версии пока невозможно, это не от меня зависит. А вычисляемое поле я сделал еще вчера, построил по нему индекс и вроде бы даже поблагодарил за помощь. Разве нет? :-)
...
Рейтинг: 0 / 0
Date Default
    #39930712
S_Gur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paver, есть такая штука, как бизнес-процесс... Мне нужна дата со временем для одного процесса, и эта же самая дата, только без времени - для другого
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Date Default
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]