Как преобразовать дату VARCHAR в стандартный MYSQL формат даты при выполнении LOAD DATA INFILE - PullRequest
0 голосов
/ 04 марта 2020

В моей таблице есть весь столбец с датой varchar, вот как это выглядит: 2/1/2020 02:30:00 (дата м / д / гггг) Я хочу преобразовать ее в стандартный формат даты MySQL ( yyyy-mm-dd) или, возможно, если возможно, версия формата даты. Я также хотел удалить время (02:30:00), если это возможно. Есть ли какая-либо команда, которую я могу запустить на терминале, чтобы преобразовать весь столбец или импортируемый в базу данных, из .xls в. sql формат файла. Другое дело, если в MySQL это невозможно, возможно, в PHP есть способ конвертировать или манипулировать указанными данными. Спасибо.

Дополнительно, возможно, есть способ конвертировать время в стандартный формат времени MySQL.

Я не уверен, как еще изменить свой вопрос, вот некоторые дополнительные данные.

enter image description here

enter image description here enter image description here

enter image description here

, который является результатом предупреждений шоу, я не уверен, где это происходит и что я делаю не так, но в данном примере все работает нормально. Я просто буду продолжать попытки, но я удовлетворен тем, что получил два очень хороших предложения и подхода, один на стороне mysql на стороне php. Спасибо.

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Вы можете сделать этот перевод непосредственно в MySQL, используя STR_TO_DATE для перевода строки в значение DATETIME, а затем DATE и TIME для извлечения даты и времени:

SELECT DATE(STR_TO_DATE('2/1/2020 02:30:00', '%c/%e/%Y')) AS date,
       TIME(STR_TO_DATE('2/1/2020 02:30:00', '%c/%e/%Y %H:%i:%s')) AS time

Вывод:

date        time
2020-02-01  02:30:00

Демонстрация на dbfiddle

0 голосов
/ 04 марта 2020

Используйте функции strtotime и date для манипуляции этой датой с MySQL Формат даты:

$db_date = "2/1/2020  02:30:00";
$new_date = date( "Y-m-d" , strtotime($db_date) );

Объяснение:

strtotime($db_date) это преобразует строковую дату в unix отметка времени

date( "Y-m-d" , .... ) преобразует * отметку времени 1021 * в формат ГГГГ-ММ-ДД (Y-m-d)

Демонстрация: https://3v4l.org/GOr34

...