【问题标题】:How to save integer in MySQL timestamp column in Wordpress?如何在 Wordpress 的 MySQL 时间戳列中保存整数?
【发布时间】: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


【解决方案1】:

当您执行插入而非整数格式时,MySQL 期望时间戳为Y-m-d H:i:s 格式。 IE。 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)
   ...
));

【讨论】:

  • 工作就像一个魅力!非常感谢! :)
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 2021-02-19
  • 1970-01-01
  • 2011-08-03
  • 2017-06-25
  • 1970-01-01
相关资源
最近更新 更多