我正在开发一个项目,我们使用SMTP发送一些数据,如果它们已经存储为像'Fri, 18 Aug 17 14:15:26 UTC'
这样的smtp格式(例如psql=> select
time,
to_char(time, 'Dy, FMDD Mon YY HH24:MI:SS TZ') as smtp_time
from
messages
order by
smtp_time;
time | smtp_time
----------------------------+-----------------------------
2017-08-18 14:15:26.537+00 | Fri, 18 Aug 17 14:15:26 UTC
2017-08-18 14:17:33.57+00 | Fri, 18 Aug 17 14:17:33 UTC
2017-07-10 14:11:46.035+00 | Mon, 10 Jul 17 14:11:46 UTC
2017-07-10 14:21:27.032+00 | Mon, 10 Jul 17 14:21:27 UTC
2017-07-10 14:21:40.541+00 | Mon, 10 Jul 17 14:21:40 UTC
2017-07-10 14:23:01.928+00 | Mon, 10 Jul 17 14:23:01 UTC
2017-07-10 14:23:15.508+00 | Mon, 10 Jul 17 14:23:15 UTC
2017-07-10 14:24:14.322+00 | Mon, 10 Jul 17 14:24:14 UTC
2017-07-10 14:26:21.426+00 | Mon, 10 Jul 17 14:26:21 UTC
2017-07-10 14:35:38.044+00 | Mon, 10 Jul 17 14:35:38 UTC
....
2017-08-16 16:03:29.214+00 | Wed, 16 Aug 17 16:03:29 UTC
2017-08-16 16:04:16.037+00 | Wed, 16 Aug 17 16:04:16 UTC
2017-08-16 16:05:07.444+00 | Wed, 16 Aug 17 16:05:07 UTC
2017-07-26 13:49:13.217+00 | Wed, 26 Jul 17 13:49:13 UTC
(96 rows)
),我会对排序时间戳有一些奇怪的问题。
一个孤立的案例,使用smtp_message_time进行排序:
interval(timestamp with time zone, timestamp with time zone)
在一些最终结果中发现负间隔之后我发现了这个问题。
如果可能的话,我宁愿使用smtp格式作为我的第一选择,而不是Postgres格式,因为它已经存储过,并且需要进行一些代码重写。
另一方面,我已经注意到我需要使用l=[[1,2,3],
[4,8],
[5,10]]
ansList = []
for i in range(len(l[0])):
for j in range(len(l[1])):
for k in range(len(l[2])):
if l[0][i]<l[1][j] and l[1][j]<l[2][k]:
ansList.append([l[0][i],l[1][j],l[2][k]])
print(ansList)
来考虑时区,我还注意到我可以把一周的不同日期和结果保持不变。
答案 0 :(得分:1)
PostgreSQL在接受时间戳的输入方面非常灵活。
SELECT 'Fri, 18 Aug 17 14:15:26 UTC'::timestamptz;
timestamptz
------------------------
2017-08-18 16:15:26+02
(1 row)
所以你可以
ORDER BY smtp_time::timestamptz