【问题标题】:How to pass a value from the Sqlite DB to julianday() [duplicate]如何将 Sqlite DB 中的值传递给 julianday() [重复]
【发布时间】:2020-10-11 09:49:17
【问题描述】:

我需要计算表示为 TEXT 的两个日期之间的差异。 julianday() 可以这样做,但它接受文字:

select(julianday('2015-01-01 12:00:00') - julianday('2015-01-01 13:00:00'))

但如果我有一张桌子:

CREATE TABLE "time_u" (
    "time_in"   TEXT,
    "time_out"  TEXT
);

INSERT INTO time_u (time_in, time_out)
VALUES ('2007-01-01 10:00:50', '2007-01-01 11:00:00')

我该怎么做? :

julianday(time_u.time_out-time_u.time_in)

换句话说,直接从数据库中取值并减去它们作为日期

【问题讨论】:

标签: sql sqlite date datetime select


【解决方案1】:

您可以将每个日期转换为儒略日,然后减去:

select 
    t.*,
    julianday(time_out) -julianday(time_in) day_diff
from time_u t

如果您想要更准确的信息,可以将日期时间转换为纪元时间戳。假设您想要以分钟为单位的差异,然后:

select 
    t.*,
    (strftime('%s', time_out) - strftime('%s', time_in)) / 60.0 day_diff
from time_u t

【讨论】:

  • 结果:没有这样的列:time_u.time_in
  • @ibse:这是因为表别名。固定。
  • 如何将其转换为分钟?我在哪里添加 *24*60??
  • @ibse:查看我的更新答案。
猜你喜欢
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 2023-03-12
  • 2016-12-23
  • 2021-07-06
  • 2014-12-05
  • 2017-09-05
相关资源
最近更新 更多