回答

收藏

如何结束一天?

技术问答 技术问答 75 人阅读 | 0 人回复 | 2023-09-13

我正在使用PostgreSQL 8.4。我在表格的一列中my_tbl包含日期(timestamp without timezone)。例如:) s) [3 n2 h/ k' v3 \
       date6 s: G" J  x* C8 c6 q! H
-------------------
. E3 _4 T: X# y7 z7 P* {- r: A2014-05-27 12:03:20
4 `$ S4 _" ~% F/ E( h2014-10-30 01:20:03
" X4 p; `+ Y, `' R2013-10-19 16:34:34
2 v- m# t& [7 U- J- o, T3 N2013-07-10 15:24:26: X; \& w* K, ]" Z6 q5 i/ A
2013-06-24 18:15:06
1 T. P* a, q% z+ E; r2012-07-14 07:09:14
. g6 d+ c$ H8 r6 A9 ^" ?2012-05-13 04:46:18* H1 e& Y4 q& }! E8 k( f7 u6 i
2013-01-04 21:31:10
3 l7 C! \% T* F# x- A, e8 j* h2013-03-26 10:17:02- A% I4 d# L$ G# c
如何编写一个SQL查询,该查询以以下格式返回所有日期:
- b2 n  D5 i7 k2 @8 Vxxxx-xx-xx 23:59:59, i- e5 O% H6 O* }* x
那是每个日期将被设置为一天的结束。9 o% V) g" F+ {8 Z; n
               
; o6 i) c- {6 u5 T解决方案:
2 I7 ^6 a' i5 Q; l: ]& I/ C! f  Q                3 p3 Q+ x) C* G. b) _& U# J$ g

* }$ `( V2 S' q7 w
) f# p* j% W! S; X3 {8 X                取日期,将其截断,添加一天,然后减去一秒:& m- O4 r2 j6 j. T1 }) M
select date_trunc('day', date) + interval '1 day' - interval '1 second'. A" |% E$ H8 E# ~9 o% K
update如果要更改表中的数据,可以将逻辑放在其中。
0 E/ H' \6 X. m& ]当然,您也可以添加24 * 60 * 60-1秒:7 M; h7 f& \- E/ u; R5 y
select date_trunc('day', date) + (24*60*60 - 1) * interval '1 second'% q6 A; Z9 S: n- n2 `- ]* B# z
但这似乎不太优雅。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则