我使用PHP和postgres完成了一个Web应用程序。现在,我正在转换为JavaScript和SQLite的同一个应用程序。我必须说,它并不太难,SQLite已经成功地解释了我在postgres中使用的相同查询。
除了这个。
SELECT SUM(t.subtotal)/MAX(EXTRACT(epoch FROM (r.fecha_out - r.fecha_in))/86400) AS subtotal,
COUNT(t.id) AS habitaciones FROM reserva_habitacion t
LEFT JOIN reserva r ON t.id_reserva=r.id
WHERE (r.fecha_in <= "2015-03-27" AND r.fecha_out > "2015-03-27") AND r.estado <> 5
使用FireFox插件“SQLiteManager”它告诉我错误是这部分epoch FROM
,但我无法理解它。我做错了什么,我该如何解决?
欢迎任何建议!
答案 0 :(得分:3)
对于关系数据库而言,异常的SQLite是完全动态类型的discussed in this manual page。
相比之下,Postgres是严格类型的,并使用运算符重载,以便timestamp - timestamp
为您提供interval
。然后可以将interval
传递给SQL标准extract()
函数,在这种情况下,给出两个时间戳之间的总秒数。 (见the manual page on Date/Time functions and operators。)
在SQLite中,您没有这样的列类型,因此您有两种选择:
extract epoch from
是多余的,因为r.fecha_out - r.fecha_in
会在几秒钟内为您提供差异。strftime('%s', foo)
将每个值转换为Unix时间戳,例如strftime('%s', r.fecha_out) - strftime('%s', r.fecha_in)