#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.
- В моей ситуации
date
тип данных поля установленyear
равным .strYear
это поле данных, которое содержит год в виде четырехзначной строки. - Выполнил приведенный ниже код. Код был запущен со страницы SQL phpMyAdmin.
UPDATE
tblBookList
SETBookYear
= STR_TO_DATE(strYear
, ‘%Y-%m-%d’ ) ;
Ответ №3:
DATE_FORMAT(FROM_UNIXTIME(entry_date), '%d %M,%Y') as new_date