PostgreSQL日期和时间相关函数

news/2024/9/25 11:13:32/

PostgreSQL日期和时间相关函数

    • 时间类型
    • 获取当前时间
    • 时间加减
    • 格式转换
    • 相关函数

示例:

--- 提取7天前的日期
SELECT (current_date - interval '7 day')::date as start_date-- 明天的日期
SELECT (current_date + interval '1 day')::date as end_date-- 当年的第一天
SELECT DATE_TRUNC('YEAR', CURRENT_DATE)::date
-- 2023-01-01-- 当月的第一天
SELECT DATE_TRUNC('MONTH', CURRENT_DATE)::date
SELECT DATE_TRUNC('MONTH', current_timestamp)::date
-- 2023-12-01-- 当年的最后一天
SELECT (DATE_TRUNC('YEAR', CURRENT_DATE+ INTERVAL '1 year') - interval '1 day')::date
-- 2023-12-31-- 提取当前时间小时
select EXTRACT(HOUR FROM CURRENT_TIME)

时间类型

  • timestamp:时间戳。格式为1997-01-01 00:00:00,January 8 04:05:06 1999 PST

  • date:日期。格式为1997-01-01,19970101,1/1/1997,Jan-1-1997等

  • time:时间。12:00:00,120000,12:00,8:00 AM,8:00 PM等格式

  • interval:时间间隔。格式为: 1 year 2 months 3 days 4 hours 5 minutes 6 seconds

获取当前时间

  • now():获取当前完整时间
  • current_timestamp:当前事务开始时的时间戳,同 now() 函数等效
  • current_date:获取当前日期
  • current_time:获取当前时间
  • localtime:当前时间
  • localtimestamp:当前事务开始时的时间戳
-- 获取当前完整时间
select now(), current_timestamp, localtimestamp, clock_timestamp()
-- 2023-12-28 09:42:01.188 +0800, 2023-12-28 09:42:01.188 +0800, 2023-12-28 09:42:01.188, 2023-12-28 09:42:01.188 +0800-- 获取当前日期或时间
select current_date, current_time, localtime;
-- 2023-12-28, 09:43:47 +0800, 09:43:47

时间加减

select now() + interval '2 years';
select now() + interval '2 year'; 
select now() + interval '2 y';
select now() + interval '2 Y';
select now() + interval '2Y';-- 同理可得月周日时分秒: months, weeks, days, hours, minutes, seconds
SELECTnow( ) + INTERVAL '2 years',--两年后now( ) + INTERVAL '1 month',--一个月后now( ) - INTERVAL '3 week',--三周前now( ) + '10 min';--十分钟后

格式转换

-- 时间转字符串
select to_char(now(), 'YYYY-MM-DD HH-MI:SS')
-- 2023-12-28 09-56:23-- 字符串转日期
select to_date('05 Dec 2000', 'DD Mon YYYY')
-- 2000-12-05-- 字符串转时间
select to_timestamp('05 Dec 2000', 'DD Mon YYYY')
-- 2000-12-05 00:00:00.000 +0800-- Unix时间戳转时间
select to_timestamp(1703728867)
-- 2023-12-28 10:01:07.000 +0800

日期和时间字符串转换常用格式:

HH	一天的小时数(01-12)
HH12	一天的小时数(01-12)
HH24	一天的小时数(00-23)
MI	分钟(00-59)
SS	秒(00-59)
MS	毫秒(000-999)
US	微秒(000000-999999)
AM	正午标识(大写)
Y,YYY	带逗号的年(4和更多位)
YYYY	年(4和更多位)
YYY	年的后三位
YY	年的后两位
Y	年的最后一位
MONTH	全长大写月份名(空白填充为9字符)
Month	全长混合大小写月份名(空白填充为9字符)
month	全长小写月份名(空白填充为9字符)
MON	大写缩写月份名(3字符)
Mon	缩写混合大小写月份名(3字符)
mon	小写缩写月份名(3字符)
MM	月份号(01-12)
DAY	全长大写日期名(空白填充为9字符)
Day	全长混合大小写日期名(空白填充为9字符)
day	全长小写日期名(空白填充为9字符)
DY	缩写大写日期名(3字符)
Dy	缩写混合大小写日期名(3字符)
dy	缩写小写日期名(3字符)
DDD	一年里的日子(001-366)
DD	一个月里的日子(01-31)
D	一周里的日子(1-7;周日是1)
W	一个月里的周数(1-5)(第一周从该月第一天开始)
WW	一年里的周数(1-53)(第一周从该年的第一天开始)

相关函数

-- 时间间隔
select age('2023-11-11', '2023-11-1')
-- 10 days-- 时间截取
select now(), date_part('hour', now()), date_part('min', now()), date_part('sec', now())
-- 2023-12-28 10:13:14.046 +0800, 10, 13, 14.046271-- 截断至指定精度
select timestamp '2023-12-13 10:15:26', date_trunc('year', timestamp '2023-12-13 10:15:26'), date_trunc('month', timestamp '2023-12-13 10:15:26'), date_trunc('day', timestamp '2023-12-13 10:15:26'), date_trunc('hour', timestamp '2023-12-13 10:15:26')
-- 2023-12-13 10:15:26.000, 2023-01-01 00:00:00.000, 2023-12-01 00:00:00.000, 2023-12-13 00:00:00.000, 2023-12-13 10:00:00.000-- 提取时间的年,月,日,时,分,秒
SELECT EXTRACT(YEAR FROM now()), EXTRACT(MONTH FROM now()), EXTRACT(DAY FROM now()), EXTRACT(HOUR FROM now()), EXTRACT(MIN FROM now()), EXTRACT(SEC FROM now())

PostgreSQL的日期/时间函数 https://blog.csdn.net/Super_King_/article/details/121521421
PostgreSQL函数——时间函数 https://blog.csdn.net/qq_33459369/article/details/119417288


http://www.ppmy.cn/news/1454725.html

相关文章

查看mysql数据库大小、表大小和最后修改时间

1.查看数据库表基本信息。 select * from information_schema.TABLES where information_schema.TABLES.TABLE_SCHEMA ‘数据库名’ and information_schema.TABLES.TABLE_NAME ‘表名’; 2.查看MySQL数据库大小 SELECT sum(DATA_LENGTH)sum(INDEX_LENGTH) FROM informati…

为什么深度学习中减小泛化误差称为“正则化(Regularization)”

深度学习的一个重要方面是正则化(Regularization),Ian Goodfellow在《Deep Learning 》称正则化(Regularization)就是减小泛化误差。那么,为什么减小泛化误差称为正则化呢? 首先看正则化——Re…

安泰ATA-L系列水声功率放大器驱动水声换能器可以进行哪些实验

水声功率放大器驱动水声换能器是进行水声实验中的关键设备之一,其应用范围广泛,可以进行多种实验和研究。以下是水声功率放大器驱动水声换能器可以进行的一些实验: 声纳性能测试:使用水声功率放大器驱动水声换能器可以进行声纳系统…

冲破“熟人社交”想象力边界,UXLINK 如何链接起 1 亿+Web3 用户?

进入 Web3 社交时代,如何巧借传统社交“熟人”关系力量实现高频信息交互和资产交易?潜力社交新星 UXLINK 搭建起全新的 Web3 用户流量入口,布局强大有力的社交关系网,为链上生态注入创新动力。据 UXLINK 官网数据显示,…

SLAIM:一个实时的RGB-D NeRF-SLAM系统

SLAIM:一个实时的RGB-D NeRF-SLAM系统与现有的NeRF-SLAM系统相比,我们的方法在跟踪性能上始终表现出更强的竞争力。我们的方法采用体积密度表示,并引入了一种新的KL正则化器在射线终止分布上,将场景几何限制为空隙空间和不透明表面…

交换两个变量

1.创建一个临时变量 创建一个临时变量tmp用来存储变量a,将b的值赋给a,最后再将tmp的值赋给b,完成变量a和变量b的交换 int main() {int a 10;int b 20;int tmp a;a b;b tmp;printf("a %d, b %d", a, b);return 0; } 2…

vue快速入门(五十五)插槽基本用法

注释很详细&#xff0c;直接上代码 上一篇 新增内容 当传输内容只有一种时的基础写法 源码 App.vue <template><div id"app"><h1>被淡化的背景内容</h1><my-dialog><!-- 插槽内容:文字以及dom结构都可以传 --><span>你确…

int * function(int a )和(int*)function(int a )和int (*function(int a )区别和使用

以下是对这几种形式的详细解释和举例&#xff1a; int * function(int a )&#xff1a;这表示定义了一个函数function&#xff0c;它接受一个整型参数a&#xff0c;并返回一个整型指针。 例如&#xff1a; int *getPointer(int a) {int *ptr &a;return ptr; }(int*)fun…