暂无图片
PG TIMESTAMP加上分钟数
我来答
分享
Thomas
2024-04-10
PG TIMESTAMP加上分钟数

postgres=# select * from taa;
work_time
---------------------
2024-04-09 09:02:00
(1 row)

postgres=# select * from tab;
nm
----
1
2
3
4
5
6
7
8
9
10
(10 rows)

TAB表的WORK_DATE为TIMESTAMP类型,TAB的NM为INTEGER。现在想两表JOIN,得到

2024-04-09 09:03:00

2024-04-09 09:04:00

.。。。。。

2024-04-09 09:12:00

即将WORK_DATE每次网上加一分钟,SQL怎么写

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
星星之火
WITH RECURSIVE seq AS (  
  SELECT current_timestamp AS ts, 1 AS cnt  
  UNION ALL  
  SELECT ts + interval '2 minutes', cnt + 1  
  FROM seq  
  WHERE cnt < 10  
)  
SELECT cnt,ts FROM seq;
复制
  1. WITH RECURSIVE 语句定义了一个名为 seq 的递归公共表表达式 (CTE)。
  2. CTE 的第一个 SELECT 语句返回当前时间戳作为 ts 和一个计数器 cnt 初始化为 1。
  3. 第二个 SELECT 语句是递归部分,它返回前一条记录的 ts 加上 2 分钟的间隔,并将计数器 cnt 增加 1。
  4. WHERE 子句确保递归只进行 9 次(因为我们已经有了一个初始记录,所以总共是 10 条记录)。
  5. 最后,我们从 seq CTE 中选择 ts 列。
暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
星星之火


暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

我原本想法,是两表做CROSS JOIN,tab表里存储每行要加的分钟数,这样得到结果是

2024-04-09 09:02:00+1分钟

2024-04-09 09:02:00+2分钟

。。。

2024-04-09 09:02:00+10分钟

但似乎PG只能是这种方式:+ interval 'xx minutes'? 也就是xx的值我无法动态赋予。你说的CTE方式挺好的。牛!

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
postgreSQL 冗余索引和重复索引的区别是什么?
回答 1
冗余索引指的是在数据库中存在多个索引,但这些索引的列组合或顺序是相同的,占用额外的存储空间,并且在数据更新时需要额外的维护开销,同时也可能导致查询性能下降重复索引指的是索引的列组合和顺序完全相同的多个
pg线上环境下,一般需要调整那些参数或者开关??
回答 3
针对postgresql安全配置方面,可以看看这个https://www.modb.pro/doc/5172
pg_rman增量恢复出错了
回答 2
第一次备份全备[postgres@testdanrmanbackup]$pgrmanbackupbackupmodefullbackuppath/backup/rmanbackupINFO:copyi
pg 中的scram-sha-256和md5?
回答 2
当pghba.conf文件配置的认证方法为md5,但服务端用户密码采用SCRAM加密时,服务端会自动采用SCRAM认证。演示过程如下:$psqlc&quot;SELECTrulenumber,type
Postgresql 怎么把用户新建表默认owner改为gis?
回答 2
已采纳
在a用户下授权表查询权限给b用户GRANTSELECTONmytableTOb;
用postgresql连续往一个表里执行4次insert语句,每次insert都要提交一次事务吗?
回答 1
已采纳
如果你的4次插入都是在一个会话中,最后一次提交就行。如果你是插入后退出在登录再插入这样是需要每次commit的。如果你的自动提交是打开的,原则上则不需要提交,事务会自动提交的。postgres\ech
pg_current_wal_lsn显示No function matches the given name and argument是啥问题?
回答 1
你的pg可能是较低的版本,把wal换成xlog,lsn换成location试试。
pg_bulkload安装出错
回答 5
[postgres@localhostextension]$more/data/pgdb/pgsql/share/extension/pgbulkload–3.1.20.sql/pgbulkload–
pg_rman从a机器做的全备,如果恢复到另一台b机器上??
回答 1
假设备份文件存储在机器A的/backup/pgrman目录下,现在要在机器B上进行恢复。首先,在机器B上安装与备份数据库兼容的PostgreSQL版本,并安装pgrman工具。然后,配置pgrman使
使用pg_basebackup进行备份恢复,需要添加restore_command,有一个拷贝归档的动作。如果在一个新库恢复,是不是就找不到对应的归档?
回答 1
看你想要恢复到什么时间节点呀,如果只是恢复到备份时的时间点,直接恢复就行了呀。
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~