Создайте временную метку из переменных в SQL и отформатируйте строку во время - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть таблица, содержащая 100 записей -

После импорта я обновил столбцы, добавив временную метку.

Данные передаются мне XMl и импортируются в БД

У меня есть 3 столбца в данных.

Дата в формате date.

Время в формате varchar,

И отметка времени.

Метка времени создается из даты и времени, вместе взятых, что прекрасно работает в PHP для всех новых записей, но мне нужно обновить старые записи, чтобы иметь также метку времени.

Примеры:

Новые записи появляются следующим образом

ANK_BD = 2020-02-13

ANK_BT = 0945

ANK_Timestamp = 2020-02-13 09: 45: 00

Но старые записи выглядят так:

ANK_BD = 2020-02-13

ANK_BT = 0945

ANK_Timestamp = null

Теперь я хочу выполнить запрос SQL для обновления старых записей.

Но я просто не могу понять, как я могу создать время из ANK_BT

Что-то вроде UPDATE 'tablename' SET 'ANK_timestamp'= 'ANK_BD'+'ANK_BT' WHERE 'ANK_timestamp' is null

Возможно ли это вообще?

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Вы можете использовать функцию mysql TIMESTAMP:

UPDATE 'tablename' SET 'ANK_timestamp' = TIMESTAMP(ANK_BD, CONCAT(ANK_BT, '00'))
WHERE 'ANK_timestamp' is null

Требуется concat для обновления правильной метки времени. «0945» преобразуется в «00: 09: 45», но «094500» преобразуется в «09: 45: 00»

Надеюсь, это поможет

1 голос
/ 21 февраля 2020

Вы можете объединить значения вместе и использовать str_to_date():

UPDATE tablename
    SET ANK_timestamp = str_to_date(concat(ANK_BD, ANK_BT), '%Y-%m-%d %h%i')
    WHERE ANK_timestamp is null;

Не используйте одинарные кавычки вокруг имен столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...