我正在使用PostgreSQL 9.5.3而我正在尝试选择年龄超过20岁的所有用户。我构建了一个显示错误的SQLFiddle:
http://sqlfiddle.com/#!15/5cd52/3
片段:
架构:
var outputString = ""
let valueString = "9,58,888.875"
let valueFormatter = NSNumberFormatter()
let outputFormatter = NSNumberFormatter()
outputFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
valueFormatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
outputString = valueFormatter.stringFromNumber(outputFormatter.numberFromString(valueString as String)!)!
print(outputString)
SQL:
CREATE TABLE users (
name text,
birthdate bigint
);
INSERT INTO users values('Chris', 774532800000);
ERROR:
SELECT u.*, age(TO_TIMESTAMP(u.birthdate / 1000)) as age from users u
WHERE age > 20
我偏离1000的原因是因为我的日期都是使用ERROR: column "age" does not exist Position: 77
存储的,因为这是Firebase的默认日期。这个postgreSQL数据库用于处理Firebase无法处理的更复杂的查询。
答案 0 :(得分:1)
在age
子句执行where
子句之前,select
别名仍然不存在。一种解决方案是检查外部查询中的age
:
select *
from (
select u.*,
extract(year from age(to_timestamp(u.birthdate / 1000))) as age
from users u
) s
where age > 20
答案 1 :(得分:0)
修改强> 正如@Clodoaldo Neto所建议的那样(我是新手,不知道如何标记),这里是:
SELECT *
FROM staging.users u
WHERE age(to_timestamp(u.birthdate / 1000)) > '20 years';
说明: