Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php xmldb_字段Moodle更改列类型_Php_Database_Postgresql_Moodle - Fatal编程技术网

Php xmldb_字段Moodle更改列类型

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

我正在尝试将列类型从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 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”!!那天的时刻…:-/