[英]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_interval
和to_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.