偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

五種主流數(shù)據(jù)庫:常用日期函數(shù)

數(shù)據(jù)庫
日期函數(shù)用于操作日期和時(shí)間數(shù)據(jù),例如獲取當(dāng)前日期、計(jì)算兩個(gè)日期之間的間隔以及獲取日期的部分信息等。

日期函數(shù)用于操作日期和時(shí)間數(shù)據(jù),例如獲取當(dāng)前日期、計(jì)算兩個(gè)日期之間的間隔以及獲取日期的部分信息等。

本文比較五種主流數(shù)據(jù)庫常用日期函數(shù)的實(shí)現(xiàn)和差異,包括 MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite。

日期函數(shù)

函數(shù)功能

MySQL

Oracle

SQL Server

PostgreSQL

SQLite

CURRENT_DATE

返回系統(tǒng)當(dāng)前日期

??

??

GETDATE()

??

??

CURRENT_TIME

返回系統(tǒng)當(dāng)前時(shí)間

??

?

GETDATE()

??

??

CURRENT_TIMESTAMP

返回系統(tǒng)當(dāng)前日期和時(shí)間

??

??

??

??

??

EXTRACT(p FROM dt)

提取日期中的部分信息

??

??

DATEPART(p, dt)

??

STRFTIME

dt1 - dt2

計(jì)算兩個(gè)日期之間的天數(shù)

DATEDIFF(dt2, dt1)

??

DATEDIFF(p, dt1, dt2)

??

STRFTIME

dt + INTERVAL

日期加上一個(gè)時(shí)間間隔

??

??

DATEADD(p, n, dt)

??

STRFTIME

下面我們通過一些示例來說明這些函數(shù)的作用和注意事項(xiàng)。

返回當(dāng)前日期和時(shí)間

CURRENT_DATE、CURRENT_TIME 以及 CURRENT_TIMESTAMP 函數(shù)分別返回了數(shù)據(jù)庫系統(tǒng)當(dāng)前的日期、時(shí)間以及時(shí)間戳(日期和時(shí)間)。例如:

-- MySQL、PostgreSQL 以及 SQLite
SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;

查詢返回的結(jié)果取決于我們執(zhí)行語句的時(shí)間。

CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP 
------------|------------|-------------------
  2021-06-20|    15:32:44|2021-06-20 15:32:44

Oracle 中的日期類型包含了日期和時(shí)間信息,Oracle 不支持 CURRENT_TIME 函數(shù)。例如:

-- Oracle
SELECT CURRENT_DATE, CURRENT_TIMESTAMP
FROM dual;

查詢返回的結(jié)果如下:

CURRENT_DATE       |CURRENT_TIMESTAMP 
-------------------|-------------------
2021-06-20 15:40:27|2021-06-21 15:40:27

在 Microsoft SQL Server 中,需要使用 GETDATE 函數(shù)返回當(dāng)前時(shí)間戳,然后通過類型轉(zhuǎn)換函數(shù) CAST(expr AS type)將結(jié)果轉(zhuǎn)換為日期或者時(shí)間類型。例如:

-- Microsoft SQL Server
SELECT CAST(GETDATE() AS DATE), CAST(GETDATE() AS TIME), CURRENT_TIMESTAMP;

下一篇我們將會(huì)介紹類型轉(zhuǎn)換函數(shù),查詢返回的結(jié)果如下:

DATE      |TIME    |CURRENT_TIMESTAMP 
----------|--------|-------------------
2021-06-20|15:47:47|2021-06-20 15:47:47

提取日期中的部分信息

EXTRACT(p FROM dt)函數(shù)提取日期時(shí)間中的部分信息,例如年、月、日、時(shí)、分、秒等。例如:

-- Oracle、MySQL 以及 PostgreSQL
SELECT EXTRACT(YEAR FROM hire_date)
FROM employee
WHERE emp_id = 1;

函數(shù)參數(shù)中的 YEAR 表示提取年份信息,查詢返回的結(jié)果如下:

EXTRACT(YEAR FROM hire_date)
----------------------------
 2000

除提取年份信息外,我們也可以使用 MONTH、DAY、HOUR、MINUTE、SECOND 等參數(shù)提取日期中的其他信息。

Microsoft SQL Server 使用 DATEPART(p, dt)函數(shù)提取日期中的信息。例如:

-- Microsoft SQL Server
SELECT DATEPART(YEAR, hire_date)
FROM employee
WHERE emp_id = 1;

函數(shù)參數(shù)中的 YEAR 表示提取年份信息,同樣也可以使用 MONTH、DAY、HOUR、MINUTE、SECOND 等參數(shù)提取日期中的其他信息。查詢返回的結(jié)果與上面的示例相同。

SQLite 提供了日期格式化函數(shù) STRFTIME,可以提取日期中的信息。例如:

-- SQLite
SELECT STRFTIME('%Y', hire_date)
FROM employee
WHERE emp_id = 1;

函數(shù)中的第一個(gè)參數(shù)%Y 代表 4 位數(shù)的年份,我們也可以使用%m、%d、%H、%M、%S 等參數(shù)提取日期中的其他信息。查詢返回的結(jié)果與上面的示例相同。

日期的加減運(yùn)算

日期的加減運(yùn)算主要包括兩個(gè)日期相減以及一個(gè)日期加/減一個(gè)時(shí)間間隔。例如:

-- Oracle 和 PostgreSQL
SELECT DATE '2021-03-01' - DATE '2021-02-01',
       DATE '2021-02-01' + INTERVAL '-1' MONTH
FROM employee
WHERE emp_id = 1;

在 Oracle 和 PostgreSQL 中,兩個(gè)日期相減就可以得到它們之間相差的天數(shù),日期加上一個(gè)時(shí)間間隔(INTERVAL)就可以得到一個(gè)新的日期。查詢返回的結(jié)果如下:

DATE'2021-03-01'-DATE'2021-02-01'|DATE'2021-02-01'+INTERVAL'-1'MONTH
---------------------------------|----------------------------------
                               28| 2021-01-01 00:00:00

2021 年 2 月有 28 天,2021 年 2 月 1 日減去一個(gè)月是 2021 年 1 月 1 日。

MySQL 使用 DATEDIFF(dt2, dt1) 函數(shù)計(jì)算日期 dt2 減去日期 dt1 得到的天數(shù),例如:

-- MySQL
SELECT DATEDIFF(DATE '2021-03-01', DATE '2021-02-01'),
       DATE '2021-02-01' + INTERVAL '-1' MONTH;

查詢返回的結(jié)果和上面的示例相同。

Microsoft SQL Server 使用 DATEDIFF(p, dt1, dt2)函數(shù)計(jì)算日期 dt2 減去日期 dt1 得到的時(shí)間間隔,使用 DATEADD(p, n, dt)函數(shù)為日期增加一個(gè)時(shí)間間隔。例如:

-- Microsoft SQL Server
SELECT DATEDIFF(DAY, '2021-02-01', '2021-03-01'),
       DATEADD(MONTH, -1, '2021-02-01');

DATEDIFF 函數(shù)中的第一個(gè)參數(shù)(DAY)表示計(jì)算第二個(gè)日期減去第一個(gè)日期的天數(shù),也可以返回月數(shù)(MONTH)或者年數(shù)(YEAR)等。DATEADD 函數(shù)在 2021 年 2 月 1 日的基礎(chǔ)上增加了-1 個(gè)月,也就是減去 1 個(gè)月。查詢返回的結(jié)果和上面的示例相同。

SQLite 可以利用 STRFTIME 函數(shù)實(shí)現(xiàn)兩個(gè)日期的相減,或者為日期增加一個(gè)時(shí)間間隔。例如:

-- SQLite
SELECT STRFTIME('%J', '2021-03-01') - STRFTIME('%J', '2021-02-01'),
       STRFTIME('%Y-%m-%d', '2021-02-01', '-1 months');

前兩個(gè) STRFTIME 函數(shù)中的參數(shù)%J 表示將日期轉(zhuǎn)換為儒略日(Julian Day)。第 3 個(gè)STRFTIME 函數(shù)格式化日期的同時(shí)增加了一個(gè)時(shí)間間隔。查詢返回的結(jié)果和上面的示例相同。

責(zé)任編輯:華軒 來源: SQL編程思想
相關(guān)推薦

2024-02-22 15:24:11

SQL數(shù)據(jù)庫

2024-05-07 14:18:18

數(shù)據(jù)庫SQLMySQL

2024-01-31 16:46:24

SQL數(shù)據(jù)庫

2011-09-21 11:21:00

NoSQL

2011-03-11 16:13:37

IBM DB2數(shù)據(jù)庫日期操作函數(shù)

2010-05-21 10:22:37

MySQL數(shù)據(jù)庫

2010-08-13 18:10:40

IBM DB2

2011-03-01 09:10:19

開源數(shù)據(jù)庫

2022-02-17 11:03:33

數(shù)據(jù)庫基礎(chǔ)語法用法

2010-04-15 15:52:12

Oracle數(shù)據(jù)庫

2011-05-16 10:29:44

HandlerSockNoSQL

2011-07-13 09:58:15

HBase

2018-07-30 09:06:46

大數(shù)據(jù)Hadoop數(shù)據(jù)架構(gòu)

2010-03-05 16:03:30

Python連接數(shù)據(jù)庫

2020-11-23 16:42:38

數(shù)據(jù)庫MySQL技術(shù)

2011-07-06 16:36:40

Redis

2011-05-30 09:27:35

NoSQL評測

2023-11-13 15:36:24

開源數(shù)據(jù)庫

2011-04-14 09:27:37

內(nèi)存數(shù)據(jù)庫

2011-08-30 17:48:48

Oracle數(shù)據(jù)庫日期to_char方式to_date方式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)