首页 > 数据库 > 数据库开发技术 > 五种主流数据库:常用日期函数
| 日期函数 | 函数功能 | MySQL | Oracle | SQL Server | PostgreSQL | SQLite |
|---|---|---|---|---|---|---|
| CURRENT_DATE | 返回系统当前日期 | ✔️ | ✔️ | GETDATE() | ✔️ | ✔️ |
| CURRENT_TIME | 返回系统当前时间 | ✔️ | ❌ | GETDATE() | ✔️ | ✔️ |
| CURRENT_TIMESTAMP | 返回系统当前日期和时间 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| EXTRACT(p FROM dt) | 提取日期中的部分信息 | ✔️ | ✔️ | DATEPART(p, dt) | ✔️ | STRFTIME |
| dt1 - dt2 | 计算两个日期之间的天数 | DATEDIFF(dt2, dt1) | ✔️ | DATEDIFF(p, dt1, dt2) | ✔️ | STRFTIME |
| dt + INTERVAL | 日期加上一个时间间隔 | ✔️ | ✔️ | DATEADD(p, n, dt) | ✔️ | STRFTIME |
-- MySQL、PostgreSQL 以及 SQLite
SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP
------------|------------|-------------------
2021-06-20| 15:32:44|2021-06-20 15:32:44
-- Oracle
SELECT CURRENT_DATE, CURRENT_TIMESTAMP
FROM dual;
CURRENT_DATE |CURRENT_TIMESTAMP
-------------------|-------------------
2021-06-20 15:40:27|2021-06-21 15:40:27
-- Microsoft SQL Server
SELECT CAST(GETDATE() AS DATE), CAST(GETDATE() AS TIME), CURRENT_TIMESTAMP;
DATE |TIME |CURRENT_TIMESTAMP
----------|--------|-------------------
2021-06-20|15:47:47|2021-06-20 15:47:47
-- Oracle、MySQL 以及 PostgreSQL
SELECT EXTRACT(YEAR FROM hire_date)
FROM employee
WHERE emp_id = 1;
EXTRACT(YEAR FROM hire_date)
----------------------------
2000
-- Microsoft SQL Server
SELECT DATEPART(YEAR, hire_date)
FROM employee
WHERE emp_id = 1;
-- SQLite
SELECT STRFTIME('%Y', hire_date)
FROM employee
WHERE emp_id = 1;
-- Oracle 和 PostgreSQL
SELECT DATE '2021-03-01' - DATE '2021-02-01',
DATE '2021-02-01' + INTERVAL '-1' MONTH
FROM employee
WHERE emp_id = 1;
DATE'2021-03-01'-DATE'2021-02-01'|DATE'2021-02-01'+INTERVAL'-1'MONTH
---------------------------------|----------------------------------
28| 2021-01-01 00:00:00
-- MySQL
SELECT DATEDIFF(DATE '2021-03-01', DATE '2021-02-01'),
DATE '2021-02-01' + INTERVAL '-1' MONTH;
-- Microsoft SQL Server
SELECT DATEDIFF(DAY, '2021-02-01', '2021-03-01'),
DATEADD(MONTH, -1, '2021-02-01');
-- SQLite
SELECT STRFTIME('%J', '2021-03-01') - STRFTIME('%J', '2021-02-01'),
STRFTIME('%Y-%m-%d', '2021-02-01', '-1 months');
原文作者:SQL编程思想;如有侵权,请联系管理员删除。