声明
select strftime('%Y-%m-%d %H:%M:%f', (select datetime('2019-07-24 11:11:59', '-288.0110592 seconds')), '+411.030309 seconds')
给我时间戳
2019-07-24 11:14:01.030
用python验证结果时,我注意到结果大约是1秒。
我的python代码:
import datetime
start = datetime.datetime.strptime('2019-07-24 11:11:59', '%Y-%m-%d %H:%M:%S')
offset1 = datetime.timedelta(seconds=288.0110592)
offset2 = datetime.timedelta(seconds=411.030309)
result = start - offset1 + offset2
print(result.strftime('%Y-%m-%d %H:%M:%S.%f'))
输出:
2019-07-24 11:14:02.019250
由于舍入错误,我没想到结果会完全相等,但是为什么sql语句看起来会偏离一秒钟呢?
1条答案
按热度按时间lawou6xi1#
你的问题是内部选择使用
datetime
. 如手册所述,datetime(...)
相当于strftime('%Y-%m-%d %H:%M:%S', ...)
,您会注意到秒的格式是%S
,不是%f
,所以是
不是正确的
更改
datetime(...)
呼叫strftime('%Y-%m-%d %H:%M:%f', ...)
即产生正确的结果。
请注意,可以简化表达式并在对的外部调用中使用这两个修饰符
strftime
:输出:
在dbfiddle上演示