Php xmldb_字段Moodle更改列类型
我正在尝试将列类型从10变为日期 我可以这样单独运行它:Php xmldb_字段Moodle更改列类型,php,database,postgresql,moodle,Php,Database,Postgresql,Moodle,我正在尝试将列类型从10变为日期 我可以这样单独运行它: ALTER TABLE "tbl_name" ALTER "col_name" TYPE timestamp USING (col_name ::timestamp); 但是在把它放到upgrade.php脚本中之后,它让我感到厌烦,并且需要USING子句,而我似乎无法使用它。或者如果有什么办法 下面是我的upgrade.php脚本: $table = new xmldb_table('tbl_name'); $field = new
ALTER TABLE "tbl_name" ALTER "col_name" TYPE timestamp USING (col_name ::timestamp);
但是在把它放到upgrade.php脚本中之后,它让我感到厌烦,并且需要USING子句,而我似乎无法使用它。或者如果有什么办法
下面是我的upgrade.php脚本:
$table = new xmldb_table('tbl_name');
$field = new xmldb_field('col_name', XMLDB_TYPE_DATETIME);
if ($dbman->field_exists($table, $field)) {
$dbman->change_field_notnull($table, $field);
}
登录Moodle管理员并运行更新时,我遇到以下错误:
ERROR: column "col_name" cannot be cast automatically to type timestamp without time zone HINT: You might need to specify "USING col_name::timestamp without time zone".
有什么想法吗
谢谢 如Moodle文档中所述,您应该避免使用datetime字段-Moodle中的所有时间戳都声明为整数10
如果您使用Moodle中内置的XMLDB编辑器生成数据库表定义,并且确实应该这样做,那么它不会提供使用datetime字段类型的选项。谢谢。我绝对是一个Moodle noob,并且在发布上面的内容大约10分钟后发现了相同的页面。而且当我意识到应用程序基本上是将所有数据从数据库中取出,并在对其进行任何操作之前立即将其放入JSON时,我发现/记住/猛击了我的前进。所以真的。。。最后没关系。最终重要的是将日期格式化为yyy-mm-dd,而不是原始数据存储为的d-m-yy。那是我的“Doh”!!那天的时刻…:-/