专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

在SQL中是如何获取今天-昨天-明天的日期时间

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:12:22       共计:3678 浏览

SQL 标准为我们定义了很多内置的处理函数,极大地方便了信息的获取和数据的处理。今天给大家介绍一下获取系统日期的内置函数,以及不同数据库中的扩展实现,包括:MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite 数据库。


获取今天的日期


SQL 标准定义了 CURRENT_DATE 函数,用于获取数据库系统的当前日期。例如:


-- MySQL、PostgreSQL、SQLite

SELECT CURRENT_DATE AS today;

today     |----------|2022-01-14|


-- Oracle

SELECT CURRENT_DATE AS today

FROM dual;

TODAY              |-------------------|2022-01-14 08:22:55|


-- SQL Server

SELECT CAST(GETDATE() AS DATE) AS today;

today     |----------|2022-01-14|


其中,Oracle 数据库中的 DATE 类型包含了日期和时间两部分信息;SQL Server 中的 GETDATE() 函数返回的是日期和时间信息,使用 CAST 函数转换为日期;SQLite 返回的结果类型为字符串。


除了 CURRENT_DATE 函数之外,有些数据库还实现了扩展的函数。例如,MySQL 中的 CURDATE() 和 CURRENT_DATE() 函数也可以返回当前日期:


-- MySQL

SELECT CURDATE(), CURRENT_DATE();

CURDATE() |CURRENT_DATE()|

----------|--------------|2022-01-14|    2022-01-14|


Oracle 也可以使用 SYSDATE 函数获取当前日期,例如:


SELECT TRUNC(SYSDATE) AS today

FROM dual;

TODAY              |-------------------|2022-01-14 00:00:00|


SYSDATE 函数同样会返回日期和时间两部分信息,使用 TRUNC 函数截断时间部分。

获取昨天的日期


基于当前日期减去一天,就可以获得昨天的日期。对于 MySQL,可以使用以下语句:


-- MySQL

SELECT CURRENT_DATE - INTERVAL '1' DAY AS yesterday;

yesterday |----------|2022-01-13|


除了直接使用 + 或者 - 进行加减运算之外,MySQL 还提供了 SUBDATE、ADDDATE、DATE_SUB、DATE_ADD 函数。


对于 Oracle,可以直接使用 + 或者 - 进行日期的加减运算:


-- Oracle

SELECT CURRENT_DATE - 1 AS yesterday

FROM dual;

YESTERDAY          |-------------------|2022-01-13 08:28:01|


对于 SQL Server,可以使用 DATEADD 函数进行日期的加减运算:


-- SQL Server

SELECT CAST(DATEADD(DAY, -1, GETDATE()) AS DATE) AS yesterday;

yesterday |----------|2022-01-13|


对于 PostgreSQL,可以直接使用 + 或者 - 进行日期加减运算:


-- PostgreSQL

SELECT CURRENT_DATE - 1 AS yesterday;

yesterday |----------|2022-01-13|


对于 SQLite,可以使用 DATE(timestring, modifier, modifier, …) 函数实现日期的运算:


-- SQLite

SELECT DATE(CURRENT_DATE,'-1 days') AS yesterday;

yesterday |----------|2022-01-13|


该函数返回结果的类型为字符串。

获取明天的日期


获取明天的日期和获取昨天的日期类似,将减法修改为加法即可。例如:


-- MySQL

SELECT ADDDATE(CURRENT_DATE, 1) AS tomorrow;

tomorrow  |----------|2022-01-15|


-- Oracle

SELECT CURRENT_DATE + 1 AS tomorrow

FROM dual;

TOMORROW           |-------------------|2022-01-15 08:45:16|


-- SQL Server

SELECT CAST(DATEADD(DAY, 1, GETDATE()) AS DATE) AS tomorrow;

tomorrow  |----------|2022-01-15|


-- PostgreSQL

SELECT CURRENT_DATE + 1 AS tomorrow;

tomorrow  |----------|2022-01-15|


-- SQLite

SELECT DATE('now', '1 days') AS tomorrow;


总结


除了获取系统日期之外,SQL 还定义了获取时间 TIME 和时间戳 TIMESTAMP 的函数,以及相关的处理函数和运算符。


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:百度索引量的解释 | ·下一条:sql游标实例-定义游标-打开游标-关闭游标-释放游标

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有