我正在编写一个插件,需要在激活时创建的自定义表中预加载一些数据。到目前为止,我的插入一直运行良好,直到我尝试插入具有日期数据类型的记录。有人能告诉我这里出了什么问题吗?
数据库表定义:
$sql = "CREATE TABLE IF NOT EXISTS " . $wpdb->prefix.SSM_ACADEMIC_YEAR_TABLE. " (
id mediumint(12) NOT NULL AUTO_INCREMENT,
academicyear VARCHAR(200) NOT NULL,
begin_date date NOT NULL,
end_date date NOT NULL,
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id));";
$wpdb->query($sql);
数据库插入:
$current_year = array(
\'academicyear\' => \'2012 - 2013\',
\'begin_date\' => date(\'Y-m-d\', \'2012-08-14\'),
\'end-date\' => date(\'Y-m-d\', \'2013-05-31\')
);
$wpdb->insert($wpdb->prefix.SSM_ACADEMIC_YEAR_TABLE, $current_year);
我尝试过许多不同的方法,比如仅仅使用=>“2012-08-14”,但这也不起作用。我肯定有一些语法我要么丢失了,要么错了。
最合适的回答,由SO网友:s_ha_dum 整理而成
date
不接受人类可读的字符串。它需要Unix timestamp. 您需要使用将该人工日期转换为时间戳strtotime
.
\'begin_date\' => date(\'Y-m-d\', strtotime(\'2012-08-14\')),
当然,实际上没有必要将年月日日期转换为时间戳,只需将其转换回年月日格式即可。