【发布时间】:2014-10-24 14:22:27
【问题描述】:
我在我的插件中为我的 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,
...
));
有人知道是什么导致了错误吗?
【问题讨论】:
-
您需要在 PHP 中使用
strtodate()或Datetime对象将输入日期转换为Y-m:d H:i:s格式 -
嗨,它已经是一个整数了。但我猜 wordpress 会将其转换为字符串或其他内容。但是一个值被保存为正确的日期。对我来说完全是无稽之谈。真的很混乱:D
-
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函数)。
标签: php mysql wordpress timestamp