R中SQLDF中的日期之间的差异

时间:2018-09-13 05:35:26

标签: r datetime sqldf

我正在使用R包SQLDF,并且无法找到两个日期时间变量之间的天数。变量ledger_entry_created_atcreated_at是Unix时代,当我尝试将它们转换为julianday后减去它们时,我返回一个NA的向量。

我看过this previous question并没有发现它有用,因为出于这个问题的原因,我的答案在SQL中给出。

如果有人可以帮助我找出在SQLDF中执行此操作的方法,我将不胜感激。

enter image description here

编辑:

    SELECT strftime('%Y-%m-%d %H:%M:%S', l.created_at, 'unixepoch') ledger_entry_created_at, 
      l.ledger_entry_id, l.account_id, l.amount, a.user_id, u.created_at
  FROM ledger l
  LEFT JOIN accounts a
  ON l.account_id = a.account_id
  LEFT JOIN users u
  ON a.user_id = u.user_id

1 个答案:

答案 0 :(得分:3)

这个答案是微不足道的,但是如果您已经有两个UNIX时间戳,并且想要找出它们之间已经间隔了多少天,则可以简单地以秒为单位(它们的原始单位)求和,然后转换为天,例如

SELECT
    (l.created_at - u.created_at) / (3600*24) AS diff
    -- any maybe other columns here
FROM ledger l
LEFT JOIN accounts a
    ON l.account_id = a.account_id
LEFT JOIN users u
    ON a.user_id = u.user_id;

我不知道您当前的方法为什么会失败,因为屏幕截图中的时间戳应该是SQLite julianday函数的有效输入。但是,同样,您可能不需要这么复杂的路线即可获得想要的结果。