1. 程式人生 > 資料庫 >Postgresql 通過出生日期獲取年齡的操作

Postgresql 通過出生日期獲取年齡的操作

三個基礎的時間表示函式 CURRENT_DATE/CURRENT_TIME/NOW()

SELECT CURRENT_DATE ;

返回當前日期以 年-月-日(yyyy-MM-dd)的形式:

2019-01-10

SELECT CURRENT_TIME;

返回當日時間以 時:分:秒+時區(HH:mm:ss )的形式:

17:49:11.585308+08

SELECT NOW();

返回當前時間 以 年-月-日 時:分:秒(yyyy-MM-dd HH:mm:ss)的形式:

2019-01-10 17:50:45.354983+0

然後幾個計算公式

第一種是直接對日期進行操作,

SELECT (CURRENT_DATE - '1993-01-01')/365 age; SELECT (CURRENT_DATE - '1993-01-01 16:00:00')/365 age;

輸出 26 26 兩種時間格式結果一致

第二種方式

SELECT age(CURRENT_DATE,'1993-01-01') age; SELECT age(CURRENT_DATE,'1993-01-01 16:00:00') age;

輸出

26 years 9 days

26 years 8 days 08:00:00

age()函式會輸出精確的年齡字串,根據傳入的時間不同,輸出的時間格式相對應

如果使用now()函式計算,需要注意age()函式能輸出正確結果,直接計算單位為day

SELECT age(CURRENT_DATE,'1993-01-01') age;
SELECT age(CURRENT_DATE,'1993-01-01 16:00:00') age;
select (now() - '1993-01-01')/365 age;
select (now() - '1993-01-01 16:00:00')/365 age

分別輸出

26 years 9 days 19:20:46.395713

26 years 9 days 03:20:46.421816

26 days 01:02:21.497111

26 days 00:59:43.688958

補充:PostgreSQL獲取當前時間的四種方式

PostgreSQL中有四種獲取當前時間的方式。

1.now()

Postgresql 通過出生日期獲取年齡的操作

返回值:當前年月日、時分秒,且秒保留6位小數。

2.current_timestamp

Postgresql 通過出生日期獲取年齡的操作

返回值:當前年月日、時分秒,且秒保留6位小數。(同上)

申明:now和current_timestamp幾乎沒區別,返回值相同,建議用now。

3.current_time

Postgresql 通過出生日期獲取年齡的操作

返回值:時分秒,秒最高精確到6位

4.current_date

Postgresql 通過出生日期獲取年齡的操作

返回值:年月日

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。