%Y-%m-%d ...
少なくとも日付形式としてではなく、で時差を表すことはできません。1日未満の違いをどのように表現しますか?(0000-00-00 ...
有効な日付ではありません)。また、月は何になりますか?30日?31日?23423432日?
私はあなたが数秒であなたの違いを保つことを提案します、そしてそれを提示するときあなたはそれを必要に応じて適応させます。
一方、あなたがあなたが尋ねたように本当にやりたいのであれば、ここに1つの方法があります:
sqlite> select datetime(strftime('%s','2012-01-01 12:00:00')
- strftime('%s','2004-01-01 02:34:56') - 62167305600, 'unixepoch');
0007-12-31 09:25:04
OPによる反対票が正当化されなかったと感じたとしても、時差が1日未満の場合に、明らかにあまり良くないオプションとして上記で述べたことが「誤った」結果を返す理由を説明するのを止められません。私が上で書いたことには理由が含まれています。そのような日付はありません。0000-00-00 ...
代わりに、返される日時は負の領域になります。-001-12-31 ...
を取得する方法は438:53:45
次のとおりですが、かなり複雑です。
earlier date: d1
later date: d2
select
cast(
(strftime('%s', d2) - strftime('%s', d1)) / 86400 * 24
+ cast(strftime("%H", time(strftime('%s', d2)
- strftime('%s', d1), 'unixepoch'))
as int)
as text)
|| ":"
|| substr(time(strftime('%s', d2) - strftime('%s', d1), 'unixepoch'), 4);
例:
d1 = '2004-01-01 02:34:56'
d2 = '2012-01-01 12:00:00'
sqlite> select cast((strftime('%s','2012-01-01 12:00:00') - strftime('%s','2004-01-01 02:34:56')) / 86400 *24 + cast(strftime("%H", time(strftime('%s','2012-01-01 12:00:00') - strftime('%s','2004-01-01 02:34:56'), 'unixepoch')) as int) as text)
|| ":"
|| substr(time(strftime('%s','2012-01-01 12:00:00') - strftime('%s','2004-01-01 02:34:56'), 'unixepoch'), 4);
70137:25:04