Как создать триггер для объединения столбца даты и столбца времени? - PullRequest
0 голосов
/ 14 июня 2019

Мне нужно заполнить столбец DATETIME данными из других столбцов, один для даты и один для времени.

Это часть кода, который я написал, но я застрял при их объединении:

СПАСИБО! разделитель $

создать триггер полной даты

before insert 



on Tabela_veche 



for each row 

1010 * начать *

if new.fulldate is null then



    set new.fulldate = = CONCAT();



end if;

конец $

1 Ответ

0 голосов
/ 14 июня 2019

Предполагается, что ваша таблица выглядит примерно так

+----------+----------+------+-----+---------+---------+
| Field    | Type     | Null | Key | Default | Extra   |
+----------+----------+------+-----+---------+---------+
| dt       | date     | YES  |     | NULL    |         |
| tm       | time     | YES  |     | NULL    |         |
| fulldttm | datetime | YES  |     | NULL    |         |
| gcdttm   | datetime | YES  |     | NULL    | VIRTUAL |
+----------+----------+------+-----+---------+---------+
4 rows in set (0.02 sec)

and dt is formatted '2019-01-01' and time '10:00:00' then str_to_date

select str_to_date(concat(dt,' ',tm),'%Y-%m-%d %h:%m:%s') dttm
from t;

возвращает

+---------------------+
| dttm                |
+---------------------+
| 2019-00-01 10:00:00 |
+---------------------+
1 row in set (0.00 sec)

Как отмечает @Raymond Nijland, вы можете использовать сгенерированный столбец

`gcdttm` datetime AS (str_to_date(concat(dt,' ',tm) ,'%Y-%m-%d %h:%m:%s')) 

и вообще не беспокоиться о триггере.

+------------+----------+----------+---------------------+
| dt         | tm       | fulldttm | gcdttm              |
+------------+----------+----------+---------------------+
| 2019-01-01 | 10:00:00 | NULL     | 2019-00-01 10:00:00 |
+------------+----------+----------+---------------------+
1 row in set (0.00 sec)
...