SQL 从给定日期值里提取年月日时分秒

SQL 从给定日期值里提取年月日时分秒,把当前日期值分解为六个部分:年、月、日、时、分和秒,并且希望结果以数字的形式返回。

SQL 从给定日期值里提取年月日时分秒 问题描述

把当前日期值分解为六个部分:年、月、日、时、分和秒,并且希望结果以数字的形式返回。

SQL 从给定日期值里提取年月日时分秒 解决方案

这里以当前日期为例。但是,本实例适用于任何其他日期值。在第 1 章,我提到过学习和利用数据库内置函数的重要性。对于日期处理而言,这一点尤其重要。除了本实例提供的做法,还有其他方式能够从给定日期值里提取年、月、日、时、分、秒等时间单位。总之,多尝试不同的做法和技巧是非常有益的。
DB2
DB2 实现了一组内置函数帮助我们方便地提取出一个日期值的每一个组成部分。这些函数分别被命名为 HOURMINUTESECONDDAYMONTHYEAR,直观地表明它们要返回的时间单位。如果我们想要“天”,那就调用 DAY 函数;如果想要“小时”,那就调用 HOUR 函数,等等。示例如下。

1 select   hour( current_timestamp ) hr,
2        minute( current_timestamp ) min,
3        second( current_timestamp ) sec,
4           day( current_timestamp ) dy,
5         month( current_timestamp ) mth,
6          year( current_timestamp ) yr
7   from t1
 
  HR   MIN   SEC    DY   MTH    YR
---- ----- ----- ----- ----- -----
  20    28    36    15     6  2005

Oracle
使用 TO_CHARTO_NUMBER 函数从一个日期值里提取各种时间单位。

1 select to_number(to_char(sysdate,'hh24')) hour,
2        to_number(to_char(sysdate,'mi')) min,
3        to_number(to_char(sysdate,'ss')) sec,
4        to_number(to_char(sysdate,'dd')) day,
5        to_number(to_char(sysdate,'mm')) mth,
6        to_number(to_char(sysdate,'yyyy')) year
7    from dual
 
HOUR   MIN   SEC    DY   MTH  YEAR
---- ----- ----- ----- ----- -----
  20    28    36    15     6  2005

PostgreSQL
使用 TO_CHARTO_NUMBER 函数从一个日期值里提取各种时间单位。

1 select to_number(to_char(current_timestamp,'hh24'),'99') as hr,
2        to_number(to_char(current_timestamp,'mi'),'99') as min,
3        to_number(to_char(current_timestamp,'ss'),'99') as sec,
4        to_number(to_char(current_timestamp,'dd'),'99') as day,
5        to_number(to_char(current_timestamp,'mm'),'99') as mth,
6        to_number(to_char(current_timestamp,'yyyy'),'9999') as yr
7   from t1
 
  HR   MIN   SEC    DY   MTH    YR
---- ----- ----- ----- ----- -----
  20    28    36    15     6  2005

MySQL
使用 DATE_FORMAT 函数从一个日期值里提取各种时间单位。

1 select date_format(current_timestamp,'%k') hr,
2        date_format(current_timestamp,'%i') min,
3        date_format(current_timestamp,'%s') sec,
4        date_format(current_timestamp,'%d') dy,
5        date_format(current_timestamp,'%m') mon,
6        date_format(current_timestamp,'%Y') yr
7   from t1
 
  HR   MIN   SEC    DY   MTH    YR
---- ----- ----- ----- ----- -----
  20    28    36    15 6      2005

SQL Server
使用 DATEPART 函数从一个日期值里提取各种时间单位。

1 select datepart( hour, getdate()) hr,
2        datepart( minute,getdate()) min,
3        datepart( second,getdate()) sec,
4        datepart( day,   getdate()) dy,
5        datepart( month, getdate()) mon,
6        datepart( year, getdate()) yr
7   from t1
 
  HR   MIN   SEC    DY   MTH    YR
---- ----- ----- ----- ----- -----
  20    28    36    15     6  2005

SQL 从给定日期值里提取年月日时分秒 扩展知识讨论

以上这些解决方案并没有什么特别之处,只是尽量利用了数据库中的内置函数。我们应该花一些时间去学习这些与日期相关的函数。不过,本实例的各个解决方案仅仅展示了这些函数的部分功能。如果仔细研究的话,我们会看到每一个函数都能接受更多的参数,并能返回更多信息,只是我们无法在本实例里一一演示给你看。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程