SQLite中有关epoch的问题
我用PHP和postgres做了一个web应用程序。现在,我正在将同一个应用程序转换为JavaScript和SQLite。我必须说,这并不难,SQLite已经成功地解释了我在postgres中使用的相同查询 除了这个SQLite中有关epoch的问题,sqlite,postgresql,Sqlite,Postgresql,我用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_habita
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
选择SUM(t.subtotal)/MAX(提取(epoch FROM(r.fecha_out-r.fecha_in))/86400作为小计,
从reserva_habitacion t将(t.id)计数为居住者
t.id\u reserva=r.id上的左连接保留r
其中(r.fecha_在“2015-03-27”中)和r.estado 5
使用FireFox插件“SqlItemManager”,它提示我错误是来自的这一部分,但我无法理解它。我做错了什么?我该如何修复它
欢迎提出任何建议 SQLite是完全动态类型化的,这对于关系数据库来说是不常见的 相反,Postgres是严格类型的,并且使用操作符重载,因此
timestamp-timestamp
为您提供了一个间隔。然后可以将间隔
传递给SQL标准extract()
函数,在这种情况下,给出两个时间戳之间的总秒数。(见附件。)
在SQLite中,没有此类列类型,因此有两种选择:
- 直接将日期时间存储为Unix时间戳;此时,
extract epoch from
是多余的,因为r.fecha_out-r.fecha_in
将以秒为单位给出差值
- 将日期时间存储为标准格式的字符串,并使用。在这种情况下,可以使用
strftime('%s',foo)
将每个值转换为Unix时间戳,例如strftime('%s',r.fecha_out)-strftime('%s',r.fecha_In)
SQLite是完全动态类型化的,这对于关系数据库来说很少见
相反,Postgres是严格类型的,并且使用操作符重载,因此timestamp-timestamp
为您提供了一个间隔。然后可以将间隔
传递给SQL标准extract()
函数,在这种情况下,给出两个时间戳之间的总秒数。(见附件。)
在SQLite中,没有此类列类型,因此有两种选择:
- 直接将日期时间存储为Unix时间戳;此时,
extract epoch from
是多余的,因为r.fecha_out-r.fecha_in
将以秒为单位给出差值
- 将日期时间存储为标准格式的字符串,并使用。在这种情况下,可以使用
strftime('%s',foo)
将每个值转换为Unix时间戳,例如strftime('%s',r.fecha_out)-strftime('%s',r.fecha_In)
SQLite是完全动态类型化的,这对于关系数据库来说很少见
相反,Postgres是严格类型的,并且使用操作符重载,因此timestamp-timestamp
为您提供了一个间隔。然后可以将间隔
传递给SQL标准extract()
函数,在这种情况下,给出两个时间戳之间的总秒数。(见附件。)
在SQLite中,没有此类列类型,因此有两种选择:
- 直接将日期时间存储为Unix时间戳;此时,
extract epoch from
是多余的,因为r.fecha_out-r.fecha_in
将以秒为单位给出差值
- 将日期时间存储为标准格式的字符串,并使用。在这种情况下,可以使用
strftime('%s',foo)
将每个值转换为Unix时间戳,例如strftime('%s',r.fecha_out)-strftime('%s',r.fecha_In)
SQLite是完全动态类型化的,这对于关系数据库来说很少见
相反,Postgres是严格类型的,并且使用操作符重载,因此timestamp-timestamp
为您提供了一个间隔。然后可以将间隔
传递给SQL标准extract()
函数,在这种情况下,给出两个时间戳之间的总秒数。(见附件。)
在SQLite中,没有此类列类型,因此有两种选择:
- 直接将日期时间存储为Unix时间戳;此时,
extract epoch from
是多余的,因为r.fecha_out-r.fecha_in
将以秒为单位给出差值
- 将日期时间存储为标准格式的字符串,并使用。在这种情况下,可以使用
strftime('%s',foo)
将每个值转换为Unix时间戳,例如strftime('%s',r.fecha_out)-strftime('%s',r.fecha_In)