学习目标:

了解EXTRACT() 函数的用法


学习内容:

适用数据库

MySQL、PGSQL
× SQL server
(其他未测)

定义

EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。用于从一个date或者interval类型中截取到特定的部分

语法

EXTRACT(unit FROM date)

date 参数是合法的日期表达式,unit参数格式如下:

Unit 值 描述
MICROSECOND 毫秒
SECOND
MINUTE
HOUR 小时
DAY
WEEK
MONTH
QUARTER 季度
YEAR
SECOND_MICROSECOND 得到的是秒+毫秒
MINUTE_MICROSECOND 得到的是分+秒+毫秒
MINUTE_SECOND 得到的是分+秒
HOUR_MICROSECOND 得到的是小时+分+秒+毫秒
HOUR_SECOND 得到的是小时+分+秒
HOUR_MINUTE 得到的是小时+分
DAY_MICROSECOND 得到的是小时+分+秒+毫秒
DAY_SECOND 得到的是小时+分+秒
DAY_MINUTE 得到的是小时+分
DAY_HOUR 得到的是小时
YEAR_MONTH 得到的是年+月

返回时间日期特定部分

示例sql:

select extract(MICROSECOND from timestamp '2021-08-25 08:54:09.549'),
extract(SECOND from timestamp '2021-08-25 08:54:09.549'),
extract(MINUTE from timestamp '2021-08-25 08:54:09.549'),
extract(hour from timestamp '2021-08-25 08:54:09.549'),
extract(DAY from timestamp '2021-08-25 08:54:09.549'),
extract(WEEK from timestamp '2021-08-25 08:54:09.549'),
extract(MONTH from timestamp '2021-08-25 08:54:09.549'),
extract(QUARTER from timestamp '2021-08-25 08:54:09.549'),
extract(YEAR from timestamp '2021-08-25 08:54:09.549')

运行结果:

时间类型timestamp转date时,MICROSECOND、SECOND、MINUTE、 HOUR不适用

select extract(MICROSECOND from date '2021-08-25 08:54:09.549'),
extract(SECOND from date '2021-08-25 08:54:09.549'),
extract(MINUTE from date '2021-08-25 08:54:09.549'),
extract(hour from date '2021-08-25 08:54:09.549'),
extract(DAY from date '2021-08-25 08:54:09.549'),
extract(WEEK from date '2021-08-25 08:54:09.549'),
extract(MONTH from date '2021-08-25 08:54:09.549'),
extract(QUARTER from date '2021-08-25 08:54:09.549'),
extract(YEAR from date '2021-08-25 08:54:09.549')

获取两个日期之间的具体时间间隔

语法:

interval '{ integer | integer time_expr | time_expr }'
{ { day | hour | minute } [ ( leading_precision ) ] |
second [ ( leading_precision [, fractional_seconds_precision ] ) ] } [ to { day |
hour | minute | second [ (fractional_seconds_precision) ] } ]

leading_precision值的范围是0到9, 默认是2. time_expr的格式为:hh[:mi[:ss[.n]]] or mi[:ss[.n]] or ss[.n], n表示微秒.
范围值:

hour: 0 to 23

minute: 0 to 59

second: 0 to 59.999999999

示例:

interval '4 5:12:10.222' day to second(3)                 表示: 4天5小时12分10.222秒interval '4 5:12' day to minute                         表示: 4天5小时12分interval '400 5' day(3) to hour                         表示: 400天5小时, 400为3为精度,所以"day(3)", 注意默认值为2.interval '400' day(3)                                   表示: 400天interval '11:12:10.2222222' hour to second(7)           表示: 11小时12分10.2222222秒interval '11:20' hour to minute                         表示: 11小时20分interval '10' hour                                      表示: 10小时interval '10:22' minute to second                         表示: 10分22秒interval '10' minute                                     表示: 10分interval '4' day                                         表示: 4天interval '25' hour                                         表示: 25小时interval '40' minute                                     表示: 40分interval '120' hour(3)                                     表示: 120小时interval '30.12345' second(2,4)                         表示: 30.1235秒, 因为该地方秒的后面精度设置为4, 要进行四舍五入.interval '20' day - interval '240' hour = interval '10-0' day to second 表示: 20天 - 240小时 = 10天0秒

sql:


select  interval '4 5:12:10.222' day to second(3),
interval '4 5:12' day to minute,
interval '400 5' day to hour,
interval '400' day,
interval '11:12:10.2222222' hour to second(7),
interval '11:20' hour to minute,
interval '10' hour,
interval '10:22' minute to second ,interval '10' minute,
interval '4' day  ,
interval '25' hour,
interval '40' minute ,
interval '120' hour,
interval '30.12345' second ,
interval '20' day - interval '240' hour,
interval '10-0' day to second

运行结果:

unit剩下的参数运行示例

select extract(SECOND_MICROSECOND from timestamp '2021-08-25 05:54:09.549'),
extract(MINUTE_MICROSECOND from timestamp '2021-08-25 05:54:09.549'),
extract(MINUTE_SECOND from timestamp '2021-08-25 05:54:09.549'),
extract(HOUR_MICROSECOND from timestamp '2021-08-25 05:54:09.549'),
extract(HOUR_SECOND from timestamp '2021-08-25 05:54:09.549'),
extract(HOUR_MINUTE from timestamp '2021-08-25 05:54:09.549'),extract(DAY_MICROSECOND from timestamp '2021-08-25 05:54:09.549'),
extract(DAY_SECOND from timestamp '2021-08-25 05:54:09.549'),
extract(DAY_MINUTE from timestamp '2021-08-25 05:54:09.549'),
extract(DAY_HOUR from timestamp '2021-08-25 05:54:09.549'),
extract(YEAR_MONTH from timestamp '2021-08-25 05:54:09.549')


注意

  1. 只可以从一个date类型中截取年月日,从timestamp中获取年月日时分秒
  2. unit参数的后面11个在PGSQL中不可行,可在MySQL上运行
  3. DAY_与HOUR_结果相同

学习时间:

2021-08-25


总结

附:学习记录,方便查看

MySQL EXTRACT() 函数

SQL-EXTRACT()相关推荐

  1. 【SQL开发实战技巧】系列(十八):数据仓库中时间类型操作(进阶)INTERVAL、EXTRACT以及如何确定一年是否为闰年及周的计算

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  2. SQL语句做报表统计

    -- 一些用到的基本SQL函数 -- 返回日期中年的值: SQL YEAR 函数. -- 返回日期中月的值: SQL Month 函数. -- 返回日期中日的值: SQL Day 函数. -- DAT ...

  3. java 必备面试必备

    1.JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含 ...

  4. 报错,could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarExc

    1.问题 {     "timestamp": "2020-11-28 11:18:17",     "status": 404,     ...

  5. SQL中EXTRACT() 函数

    EXTRACT()("提取"的意思) 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 就是返回出来具体的年,月,日 2008-12-29 16:25:46.63 ...

  6. mysql sql w3cschool_SQL复习(w3school)笔记

    SQL基础 1.SQL对大小写不敏感 2.DML(数据操作语言)与DDL(数据定义语言) a) DML SELECT UPDATE DELETE INSERT INTO b) DDL CREATE D ...

  7. oracle pl/sql 程序设计 历史笔记整理

    20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...

  8. SQL Date 函数

    MySQL Date 函数 函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 E ...

  9. 学习sql注入:猜测数据库_对于SQL的热爱:为什么要学习它以及它将如何帮助您...

    学习sql注入:猜测数据库 I recently read a great article by the esteemed @craigkerstiens describing why he feel ...

  10. BIP_BI Pubisher的SQL/XSL/FO扩展函数应用(概念)

    2014-12-01 Created By BaoXinjian 一.摘要 XML Publisher扩展了一些SQL和XSL,XSL-FO函数,使它们可以在RTF模板中使用.语法如下: 扩展SQL语 ...

最新文章

  1. linux升级补丁tar,Linux内核升级补丁安装手册(一)
  2. ES6新特性_变量的解构赋值---JavaScript_ECMAScript_ES6-ES11新特性工作笔记006
  3. 移动Web利器transformjs入门
  4. oracle c6,redhat6.8系统下安装oracle数据库
  5. macOS Catalina下RX580/Vega系列显卡启动后DP输出黑屏和ALC1220声卡无法驱动的解决方案
  6. 定时器name冲突会报错吗_部落冲突:冬季版本即将更新,多个超级兵种被曝光,会上线吗?...
  7. C语言基础教程篇之作用域规则
  8. 树莓派:漂洋过海来看你
  9. 【code vs】 2780 ZZWYYQWZHZ
  10. HWSD土壤数据集下载及打开方法
  11. BM3D、域变换与Non-Local
  12. Android Lottie动画
  13. (翻译)机器学习:E.coli数据集的不平衡多类分类
  14. java谷歌翻译_Java 调用 google 翻译
  15. cityscape train.txt 数据 python读取子文件夹内所有文件
  16. LAZARUS APT利用恶意word文档攻击MAC用户
  17. 使用@media screen解决分web不同分辨率问题
  18. PCL小工具二:使用kitti的GT(ground truth)建立激光点云地图
  19. 文字很浅显,但道理却不易懂
  20. Sicily 1466. Taunt Exposure Estimation

热门文章

  1. 使用 Vue 框架 实现经典例子:TodoMVC
  2. bzoj3609 [Heoi2014]人人尽说江南好 博弈
  3. “量子+生成式AI”!IBM联合生物制药公司Moderna进行疫苗研究
  4. 模板方法模式C++实现
  5. Ubuntu 20.04 配置静态 IP 地址
  6. 几种常用深度学习框架简介
  7. @NotEmpty、@NotBlank、@NotNull 区别和使用
  8. 计算机系大二学期计划范文,大学新学期计划
  9. Cocos打造纸片3D超美效果 《乱斗堂2》华丽来袭
  10. PAT 练习之 字符串排序 详解,超级详尽。