2012-07-03 3 views
1

В серьезном недосмотре с моей стороны, я отсортировал все форматы даты как %M %d %Y (July 3 2012), а не %Y %m %d (2012 07 03).Обновление формата даты в формате Wordpress

Я хочу преобразовать все даты настраиваемого поля (так называемый 'game_release_date') в новый формат.

код у меня до сих пор (но не работает) является:

UPDATE `wp_postmeta` 
SET meta_key = DATE(STR_TO_DATE(game_release_date, '%m %d %Y')) 
WHERE DATE(STR_TO_DATE(game_release_date, '%M %d %Y')); 
+1

Ваш вопрос неоднозначен. Формат даты '% B /% e /% Y' не имеет смысла ('% B' не является допустимым [спецификатором формата] (http://dev.mysql.com/doc/en/date-and-time -functions.html # function_date-формат)). Кроме того, вы говорите, что хотите «% Y% m% d», но затем имеете «% m /% d /% Y» в своем SQL, и ни один из ваших форматов не согласуется с строками даты примера, которые вы даете. Что именно вы пытаетесь достичь? – eggyal

+0

Извините, я не знаю, откуда эти «/». Я взял имена форматов отсюда (http://en.wikipedia.org/wiki/Date_(Unix)), поскольку я не знал, что это такое. В принципе, я хочу конвертировать все даты в пользовательское поле 'release_date' в формате от 3 июля 2012 года до 2012 года 07 03. –

+0

Итак, посмотрим на ссылку, которую вы мне отправили (т. Е. Правая). Я хочу превратить% M% d% Y в & Y% m% d. –

ответ

0

Чтобы преобразовать строку, содержащую July 03 2012 в дату MySQL используйте STR_TO_DATE() функцию в MySQL:

STR_TO_DATE(game_release_date, '%M %d %Y') 

Я бы рекомендовал сохранить результат этой функции в столбце типа данных DATE.

Чтобы преобразовать дату MySQL (будь то результат функции выше, или DATE колонки) в 2012 07 03, используйте DATE_FORMAT() функцию в MySQL:

DATE_FORMAT(date_value, '%Y %m %d') 

Поэтому, если вы хотите сохранить ваши даты в строке (как правило, плохая идея), но в новом формате:

UPDATE wp_postmeta 
SET game_release_date = DATE_FORMAT(
     STR_TO_DATE(game_release_date, '%M %d %Y'), 
     '%Y %m %d' 
     ) 
WHERE meta_key = ... 
+0

Я не уверен, что могу сохранить его как дату, так как это специальное поле в WordPress, которое хранится в столбце «meta_value» с соответствующей «meta_key». Я предполагаю, что я бы использовал «WHERE meta_key = game_release_date», чтобы убедиться, что я их затрагиваю. Используя предложенный код (вместе с meta_key = game_release_date), я получаю следующую ошибку: «# 1054 - Неизвестный столбец« game_release_date »в« списке полей »« –

+0

@DavidHoward: Oh! 'game_release_date' - ваш' meta_key', а не настраиваемое поле (как указано в вашем вопросе)? В этом случае вам нужно будет заменить все ссылки на 'game_release_date' выше на' meta_value', а затем на 'WHERE meta_key = 'game_release_date''. – eggyal

+0

Пользовательское поле под названием «game_release_date» станет мета-ключом, не так ли? Я думал, что это всегда так. Тогда информация внутри настраиваемого поля станет метазначением. –

Смежные вопросы