回答

收藏

从时间戳日期减去1天

技术问答 技术问答 270 人阅读 | 0 人回复 | 2023-09-14

我正在使用Datagrip for Postgresql。我有一个带有时间戳格式的日期字段表(ex: 2016-11-0100:00:00)
% d. j9 K. P  h+ h[ol]应用数学运算符减去1天
: \) y- |" C2 D+ g8 r根据今天-窗口过滤130天
/ o  ^5 K. @9 o$ t0 R, C8 q4 _没有邮票hh / mm / ss部分显示(2016)-10-31)[/ol]当前的起始查询:% H) Z" U" e2 p( y) s
select org_id,count(accounts) as count,((date_at) - 1) as dateat from sourcetable where  date_at ((date_at)-1)第一行子句:
" Q* v* l0 [& {" P' r1 _7 D; ]$ u[42883]错误:操作符不存在:没有时间戳-整数提示:没有操作符来匹配给定的名称和参数类型。您可能需要添加显式类型转换。位置:69
' P2 F; L  J$ `2 M  C: M: y+ K
该now()句子产生类似的消息:
+ t5 Z: m6 j  P% z8 |" [[42883]错误:运算符不存在:带时区的时间戳-整数提示:不匹配给定的名称和参数类型。您可能需要添加显式类型转换。位置: …0 r1 @+ P1 n3 F
类型转换的在线指南绝对无济于事。输入表示赞赏。! S7 E" V' O2 Y0 B: g3 G
                                                                ) J- M# l1 B4 z- y* n
    解决方案:                                                               
7 e% F0 G% N* N7 p                                                                使用INTERVAL例如:) o$ F) s8 g& e( I6 M- Y
--yesterdaySELECT NOW() - INTERVAL '1 DAY';--Unrelated to the question,but PostgreSQL also supports some shortcuts:SELECT 'yesterday'::TIMESTAMP,'tomorrow'::TIMESTAMP,'allballs'::TIME;然后,您可以执行以下操作:
9 L# d" `, B/ v3 c+ ^4 sSELECT     org_id,   count(accounts) AS COUNT,   ((date_at) - INTERVAL '1 DAY') AS dateatFROM     sourcetableWHERE     date_at 尖端秘诀1您可以添加多个操作数。例如:如何获得当月的最后一天?
6 @% o  W0 V& G9 @8 t9 A6 hSELECT date_trunc('MONTH',CURRENT_DATE)   INTERVAL '1 MONTH - 1 DAY';秘诀2你也可以用make_interval函数创建间隔,在运行时需要创建间隔时有用(不使用文本):, }+ C& g% D! [7 o# ^
SELECT make_interval(days => 10   2);SELECT make_interval(days => 1,hours => 2);SELECT make_interval(0,1,0,5,0,0,0.0);更多信息:日期/时间函数和运算符% M6 Z0 s8 a* w" K7 g; ?+ i3 D" ]/ s
datatype-datetime(特殊值)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则