簡體   English   中英

兩個日期之間的年份差異

[英]Difference in years between two dates

我在postgresql中有一個表,該表的列數據類型為TIMESTAMP名為birthdate ,是否可以編寫一條sql語句,該語句將返回表中存儲的生日和當前日期之間的年數差? 怎么做? 我的服務器是Postgresql

這是我嘗試過的方法,但是第二次選擇卻給了我一個語法錯誤

select DATEDIFF(yy, NOW(), select birthdate from match where match_id = '550856d8560a64ed180416d1556f5435f4bb054c68930040')

這里有很多錯誤。

select DATEDIFF
       ^^^^
       PostgreSQL doesn't have a datediff function.

regress-> \df datediff
                       List of functions
 Schema | Name | Result data type | Argument data types | Type 
--------+------+------------------+---------------------+------
(0 rows)

我認為您需要-運算符, extract函數, justify_intervalto_char函數。 另外,編寫current_timestamp而不是now() ,這是標准拼寫。

還有這個:

(yy, NOW(), select birthdate ...)
            ^^^

是語法錯誤,因為您沒有將子查詢包裝在(parentheses) ,它應該是:

(yy, NOW(), (select birthdate  ...))

但是在這種情況下,不需要子查詢,因為您可以將其展平到外部查詢中,這在固定子查詢但沒有其他條件的情況下可以實現:

select DATEDIFF(yy, NOW(), birthdate)
from match where match_id = '550856d8560a64ed180416d1556f5435f4bb054c68930040';

對於日期減法:

regress=> SELECT extract(year FROM justify_interval(current_timestamp - DATE '2008-02-01'));
 date_part 
-----------
         7
(1 row)

給出類似的東西:

SELECT extract(year FROM justify_interval(current_timestamp - birthdate))
from match where match_id = '550856d8560a64ed180416d1556f5435f4bb054c68930040';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM