Разница между датами в SQLDF в R - PullRequest
0 голосов
/ 13 сентября 2018

Я использую пакет R SQLDF и не могу найти количество дней между двумя переменными даты и времени. Переменные ledger_entry_created_at и created_at являются эпохами Unix, и когда я пытаюсь вычесть их после приведения к julianday, я возвращаю вектор NA.

Я посмотрел на этот предыдущий вопрос и не нашел его полезным с тех пор, как мой ответ будет дан в 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 голосов
/ 13 сентября 2018

Этот ответ тривиален, но если у вас уже есть две метки времени 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;

Я не знаю, почему ваш текущий подход терпит неудачу, так как временные метки, которые у вас есть на снимке экрана, должны быть допустимыми входными данными для функции julianday SQLite. Но, опять же, вам может не понадобиться такой сложный маршрут, чтобы получить желаемый результат.

...