2014-10-24 3 views
1

Я создал таблицу для моего WordPress базы данных в мой плагин с:Как сохранить целое число в столбце timestamp MySQL в Wordpress?

global $wpdb; 
require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
global $charset_collate; 
$table_name = $wpdb->prefix .'tablename'; 
$sql="CREATE TABLE ".$table_name." (
    ... 
    date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(), 
    ... 
) $charset_collate; 
"; 
dbDelta($sql); 

Это прекрасно работает. Но когда я пытаюсь сохранить целочисленные значения, представляющие дату, которую она сохраняет «0000-00-00 00:00:00», за исключением одного случая, это сохраняет правильную дату: «2014-01-11 01:59:00». Но все целочисленные значения являются допустимыми датами времени (int (1401110159), int (1400525576), int (1400510041), ...). Вот код, который я пытаюсь вставить в свои строки:

$wpdb->$table_name=$table_name; 
$wpdb->insert($table_name, array(
    ... 
    "date" => $my_date_integer_variable, 
    ... 
)); 

Кто-нибудь знает, что вызывает ошибку?

+1

Вам нужно преобразовать даты ввода в формат 'Ym: d H: i: s', используя объект' strtodate() 'или' Datetime' в PHP –

+0

Привет, это уже целое число. Но, я думаю, wordpress преобразует его в строку или что-то в этом роде. Но одно значение сохраняется как правильная дата. Это не имеет никакого смысла для меня. На самом деле путают: D – user2718671

+1

Столбец «timestamp» сохраняет значение как целое ** внутри **, но ** отображает ** обратно к вам как «Y-m-d H: i: s'. Этот столбец полезен, потому что он всегда UTC - упрощает его смещение с информацией о часовом поясе. Когда вы вставляете в столбец «timestamp», он хочет форматировать значение так же, как оно показывает его обратно, что означает «Y-m-d H: i: s'. Как отметили другие ребята, вы делаете это, форматируя дату должным образом. Если вы хотите вставить текущее время в «timestamp», вы можете выдать 'INSERT INTO your_ts_table SET ts_column = NOW();' (последняя функция MySQL). –

ответ

2

MySQL ожидает, что временные метки должны быть в формате Y-m-d H:i:s, когда вы вставляете не целочисленный формат. то есть. 2014-10-24 23:23:34

можно сделать преобразование из INT в формат времени даты с:

date('Y-m-d H:i:s', 1401110159) 

В вашем случае:

$wpdb->insert($table_name, array(
    ... 
    "date" => date('Y-m-d H:i:s', $my_date_integer_variable) 
    ... 
)); 
+0

Работал как очарование! Большое спасибо! :) – user2718671

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