|
Date Default
|
|||
---|---|---|---|
#18+
Добрый день. MySQL 5.7 В таблице поле типа Date. Можно ли как-то указать ему дефолтовое значение - текущую дату? В полях типа DateTime прекрасно работает Default Now(), CurDate() почему-то он уже не понимает... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 08:08 |
|
Date Default
|
|||
---|---|---|---|
#18+
S_Gur Можно ли как-то указать ему дефолтовое значение - текущую дату? Нет. Версия маловата. Это на 8+ можно будет использовать выражение. Используйте триггер: Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 10:28 |
|
Date Default
|
|||
---|---|---|---|
#18+
Akina, жалко. Я хотел обойтись без триггера. А в описании индекса тоже никаких подобных конструкций не существует? Мне, собственно, нужна дата со временем и уникальный индекс, который включает в себя только эту дату без времени. В принципе, я меняю данные хранимыми процедурами, просто хотелось немного уменьшить их код ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 11:03 |
|
Date Default
|
|||
---|---|---|---|
#18+
Блин, вот как вы все любите спросить одно, когда нужно совсем другое.. 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 14:26 |
|
Date Default
|
|||
---|---|---|---|
#18+
Akina, я спрашивал именно то, что мне нужно. Заметь - не то, что ты себе представляешь, а то, что мне действительно нужно. Самым простым способом добиться того, что мне нужно, без написания триггера или лишнего кода в хранимке - это либо создать уникальный индекс на обрезанную от времени дату - что, как я понимаю, невозможно, - либо держать второе поле типа Date, в которое при записи обрезать от времени основной DateTime и строить индекс по нему. Альтернатива этому - либо триггер, либо совсем обойтись без индекса (благо, таблица небольшая) и проверять уникальность в коде процедуры. В общем-то, проблема решена и ответы на мои вопросы получены. Тема закрыта, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 14:39 |
|
Date Default
|
|||
---|---|---|---|
#18+
S_Gur создать уникальный индекс на обрезанную от времени дату - что, как я понимаю, невозможно ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 14:44 |
|
Date Default
|
|||
---|---|---|---|
#18+
miksoft, ты плохо прочел мой предыдущий пост. В ссылках как раз показывается, как создать второе поле нужного мне типа, я не говорил, что это невозможно. Немного неудобно держать в таблице лишнее поле, но в принципе это решает мою проблему, как я и написал. Создать индекс на предварительно обработанное поле - что-то типа Create Unique Undex I1 On Table1(Date(Table1.FieldDateTime)) - насколько я понял из этих ссылок, невозможно... Либо я чего-то не нашел ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 15:06 |
|
Date Default
|
|||
---|---|---|---|
#18+
S_Gur, Полноценные FBI появились только в 8 версии MySQL. Но в версии 5.7 можно сделать генерируемое поле, даже без его физического хранения, и по этому полю построить индекс. Что есть практически тот же FBI, за исключением того, что в SELECT * станет больше полей. Но это не считаю критичным, т.к. в боевых запросах звездочку писать и без этого плохая практика. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 17:21 |
|
Date Default
|
|||
---|---|---|---|
#18+
S_Gur Либо я чего-то не нашел Слова VIRTUAL. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 19:08 |
|
Date Default
|
|||
---|---|---|---|
#18+
Akina, нет, не упустил. Virtual мне в данном случае вовсе не помогает. Это разновидность второго поля, которое - физически или виртуально - сидит в таблице и в коде мне приходится по мере надобности обращаться то к одному, то к другому. Этого я хотел бы избежать, но не получилось. Я уже упоминал, что таблица у меня небольшая, будет это поле физическим или виртуальным - мне абсолютно фиолетово. А конструкция `dtDateOnly` Date As (Date(`dtDate`)) Not Null Comment 'Дата документа' в Create Table меня вполне устраивает и прекрасно работает. Я очень надеялся, что в MySQL есть какая-то конструкция, которая позволяет строить индекс по обработанному предварительно полю из таблицы - как я писал, что-то типа Create Unique Undex I1 On Table1(Date(Table1.FieldDateTime)), не трогая ради этого структуру таблицы вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 12:40 |
|
Date Default
|
|||
---|---|---|---|
#18+
S_Gur Мне, собственно, нужна дата со временем и уникальный индекс, который включает в себя только эту дату без времени. Нифига не понял (я чайник, да). Если нужна дата со временем, то причем тут поле типа Date? А если есть DateTime, что мешает сделать индекс только по дате? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 14:06 |
|
Date Default
|
|||
---|---|---|---|
#18+
paver А если есть DateTime, что мешает сделать индекс только по дате? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 15:48 |
|
Date Default
|
|||
---|---|---|---|
#18+
Akina, обновление версии пока невозможно, это не от меня зависит. А вычисляемое поле я сделал еще вчера, построил по нему индекс и вроде бы даже поблагодарил за помощь. Разве нет? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 17:01 |
|
|
start [/forum/topic.php?fid=47&msg=39930124&tid=1828732]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
81ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 458ms |
0 / 0 |