SQL 日期函数
1. 前言
编程之家解释: 内置的日期主要用于对日期和时间类型
的字段进行相关的操作。
本小节,我们将一起学习 中的日期。
日期和时间类型是两个比较繁琐的数据类型,它们无法和一样易于操作和判断,因此 提供了一系列的日期供开发者使用。
本小节测试数据如下,请先在中执行:
DROP TABLE IF EXISTS imooc_user;CREATE TABLE imooc_user( id int PRIMARY KEY, username varchar(), age int, create_time timestamp);INSERT INTO imooc_user(id,username,age,create_time)VALUES (,'peter',, '2020-01-29 19:33:55'),(,'pedro',,'2020-01-27 11:33:55'),(,'jerry',,'2020-01-29 01:33:50');
2. 实践
在 中,常见的日期有如下几个:
: Postgre CURRENT_XXX 这些,当前时间戳可以使用 。
提供了方便的来帮助我们获得当前的日期和时间,且其值与当前系统和时区均有关系。
我们先当前日期:
SELECT CURRENT_DATE();
+----------------+ | CURRENT_DATE() | +----------------+ | 2020-01-29 | +----------------+
然后当前时间:
SELECT CURRENT_TIME();
+----------------+ | CURRENT_TIME() | +----------------+ | 19:42:18 | +----------------+
当然,我们也可以通过时间戳来一起日期和时间:
SELECT CURRENT_TIMESTAMP();
+---------------------+ | CURRENT_TIMESTAMP() | +---------------------+ | 2020-01-29 19:43:01 | +---------------------+
通过EXTRACT
我们可以抽取 imooc_user 表中create_time
字段的某些具体值,如获得是那一年被创建的:
SELECT EXTRACT(YEAR FROM create_time) FROM imooc_user;
+--------------------------------+ | EXTRACT(YEAR FROM create_time) | +--------------------------------+ | 2020 | | 2020 | | 2020 | +--------------------------------+
我们也可以抽取具体创建的哪一秒:
SELECT EXTRACT(SECOND FROM create_time) FROM imooc_user;
+----------------------------------+ | EXTRACT(SECOND FROM create_time) | +----------------------------------+ | 55 | | 55 | | 50 | +----------------------------------+
我们还可以通过DATE
、YEAR
等具体来抽取创建时间,比如新建的日期:
SELECT DATE(create_time) FROM imooc_user;
+-------------------+ | DATE(create_time) | +-------------------+ | 2020-01-29 | | 2020-01-27 | | 2020-01-29 | +-------------------+
还可以抽取小时部分:
SELECT HOUR(create_time) FROM imooc_user;
+-------------------+ | HOUR(create_time) | +-------------------+ | 19 | | 11 | | 1 | +-------------------+
3. 小结
CURRENT_TIMESTAMP 是非常重要的,很多关于日期类型的插入都是通过它来完成的。
日期抽取多数用来具体的年份和月份的数据。如YEAR(create_time)=2020
。