Как я могу преобразовать строку в дату в phpMyAdmin?

#php #mysql #sql #date #phpmyadmin

#php #mysql #sql #Дата #phpmyadmin

Вопрос:

Я веб-дизайнер, новичок в php / sql / phpMyAdmin, но быстро учусь.

Я импортировал данные со столбцом «Entry_Date» в следующем неправильном формате: (мм / дд / гггг) Который мне теперь нужно преобразовать в правильный формат / тип ДАТЫ.

Я настроил 2 столбца
1) Entry_Date — char(10)
2) New_Date — дата

В phpMySql на вкладке «SQL» в myTable я запустил;

 UPDATE myTable(New_Date)
SELECT STR_TO_DATE(Entry_Date,'%m/%d/%Y') as date FROM `myTable`;
 

Я подтвердил, что строка SELECT STR_TO_DATE успешно преобразует строку в DATE, но я не могу получить эти значения для ОБНОВЛЕНИЯ столбца New_Date (который уже заполнен «0000-00-00». Чего мне не хватает?

Комментарии:

1. какую ошибку вы получили?

2. #1062 — Дублирующая запись » для ключа ‘PRIMARY’

3. Также столбец New_Date в качестве типа ДАТЫ в настоящее время хранит это значение: 0000-00-00 для каждой строки. Поэтому мне интересно, требуется ли для этого команда UPDATE вместо INSERT .

Ответ №1:

попробуйте это

    SELECT STR_TO_DATE(Entry_Date,'%Y-%m-%d')  FROM `myTable`;
 

или это

   SELECT DATE_FORMAT(Entry_Date,'%Y-%m-%d')  FROM `myTable`; 
 

Редактировать:

   UPDATE myTable SET New_Date = DATE(DATE_FORMAT(Entry_Date,'%Y-%m-%d')) ;
 

Комментарии:

1. Каждый из них выдает эту ошибку -> #1062 — Дублирующая запись » для ключа ‘PRIMARY’

2. Также столбец New_Date в качестве типа ДАТЫ в настоящее время хранит это значение: 0000-00-00 для каждой строки. Поэтому мне интересно, требуется ли для этого команда UPDATE вместо INSERT .

3. Ну, синтаксис не вызвал ошибок, но «0 строк затронуты», поэтому значения New_Date остаются «0000-00-00»

4. Я не знаю, имеет ли это значение, но Entry_Dates в этом формате (мм / дд / гггг), А НЕ (мм-дд-гггг). Обновлен исходный пост.

5. Я не вставлял туда 0000-е, они были в «New_Date» по умолчанию, когда я выбрал ДАТУ в качестве типа поля.

Ответ №2:

Я использую Linux (Ubuntu 16.04) с MariaDB.

  1. В моей ситуации date тип данных поля установлен year равным . strYear это поле данных, которое содержит год в виде четырехзначной строки.
  2. Выполнил приведенный ниже код. Код был запущен со страницы SQL phpMyAdmin.

    UPDATE tblBookList SET BookYear = STR_TO_DATE( strYear , ‘%Y-%m-%d’ ) ;

Сравнение типов данных MySQL с SQL Server

Ответ №3:

 DATE_FORMAT(FROM_UNIXTIME(entry_date), '%d %M,%Y') as new_date