我要将我的数据从sqlite3移植到PostgreSQL(版本10.1),但有些查询语句看起来与原件不兼容。例如,声明:
SELECT date+300 AS date_norm, close FROM History WHERE date_norm>1502681700;
在sqlite3中运行时,我得到了:
错误:列" date_norm"不存在
LINE 1:... T date + 300 AS date_norm,close FROM History WHERE date_norm> ...
我不知道错误,任何提示都表示赞赏。提前谢谢。
答案 0 :(得分:2)
现有查询存在问题,需要更改。
SELECT "date"+300 AS date_norm, close
FROM History
WHERE "date" > (1502681700-300);
column alias
。 SQL的实际执行顺序与编写SQL查询的方式不同。实际上where子句是在select子句之前执行的,因此别名“date_norm”根本不被where子句理解。而是参考源列“日期”并相应地修改过滤方式,这里我只是从您使用的常量值中扣除了300. 此外,date
是标准SQL(refer)中的“保留字”。您不应将保留字用作列名,或者应将该列名称引用为“日期”(例如select "date" from History
)。虽然它不会在PostgreSQL中造成问题,但它是一个潜在的可移植性问题。