конвертировать строку даты в поле mysql datetime

У меня есть куча записей с датами, отформатированными как строка, такая как '04 / 17/2009 '

Я хочу преобразовать их в поле datetime mysql

Я планирую использовать цикл foreach для чтения старого значения даты и вставки вновь отформатированного значения в новое поле в каждой записи

что было бы лучшим способом конвертировать эту строку … Я думал, у php может быть способ сделать это автоматически?

благодаря

Solutions Collecting From Web of "конвертировать строку даты в поле mysql datetime"

Сначала преобразуем строку в метку времени:

$timestamp = strtotime($string); 

Затем сделайте

 date("Ymd H:i:s", $timestamp); 

Если эти строки в настоящее время находятся в db, вы можете пропустить php, используя функцию STR_TO_DATE () mysql.

Я предполагаю, что строки используют формат, например month/day/year где month и day всегда 2 цифры, а year – 4 цифры.

 UPDATE some_table SET new_column = STR_TO_DATE(old_column, '%m/%d/%Y') 

Вы можете поддерживать другие форматы дат, используя другие спецификаторы формата .

Используйте DateTime :: createFromFormat следующим образом:

 $date = DateTime::createFromFormat('m/d/YH:i:s', $input_string.' 00:00:00'); $mysql_date_string = $date->format('Ymd H:i:s'); 

Вы можете адаптировать его к любому входному формату, тогда как strtotime () предположит, что вы используете формат даты в США, если используете /, даже если это не так.

Добавленный 00:00:00 – это потому, что createFromFormat будет использовать текущую дату для заполнения отсутствующих данных, т. Е. Он будет занимать текущий час: мин: сек, а не 00:00:00, если вы не уточните его.

 $time = strtotime($oldtime); 

Затем используйте date() чтобы поместить его в правильный формат.

 SELECT * FROM table_name WHERE CONCAT( SUBSTRING(json_date, 11, 4 ) , '-', SUBSTRING( json_date, 7, 2 ) , '-', SUBSTRING( json_date, 3, 2 ) ) >= NOW(); 

json_date ["05/11/2011"]

Я предполагаю, что мы говорим об этом в Баше?

Мне нравится использовать sed для загрузки значений даты в массив, чтобы я мог разбивать каждое поле и делать с ним все, что захочу. Следующий пример предполагает и вводит формат mm / dd / yyyy …

 DATE=$2 DATE_ARRAY=(`echo $DATE | sed -e 's/\// /g'`) MONTH=(`echo ${DATE_ARRAY[0]}`) DAY=(`echo ${DATE_ARRAY[1]}`) YEAR=(`echo ${DATE_ARRAY[2]}`) LOAD_DATE=$YEAR$MONTH$DAY 

вы также можете прочитать команду date в linux. Это может быть очень полезно: http://unixhelp.ed.ac.uk/CGI/man-cgi?date

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

-Ryan