Php 时差

Php 时差,php,postgresql,date,timestamp,Php,Postgresql,Date,Timestamp,我不熟悉PostgresQL和PHP,正在使用PostgresQL时间戳对象,并试图找出现在和该时间戳之间的差异,以年、月和日为单位显示。有必要这样做吗 谢谢 select age(now(), '2010-01-02 12:34:35'); 完整版本: select substring(a from 1 for (position('days' in a) + 3)) from (select (age(now(), '2010-01-02 12:34:35'))::text) s(a)

我不熟悉PostgresQL和PHP,正在使用PostgresQL时间戳对象,并试图找出现在和该时间戳之间的差异,以年、月和日为单位显示。有必要这样做吗

谢谢

select age(now(), '2010-01-02 12:34:35');
完整版本:

select substring(a from 1 for (position('days' in a) + 3)) 
from (select (age(now(), '2010-01-02 12:34:35'))::text) s(a)
;
       substring        
------------------------
 2 years 4 mons 30 days
(1 row)

您只需减去两个时间戳,结果就是一个。
要获取“现在”,可以使用
now()
当前时间戳
(以及其他)

这将显示如下内容:

830 days 23:00:50.127241
要获得对齐的表示,请使用

以您似乎在追求的格式显示相同的值:

2 years 3 mons 20 days 23:01:34.095813

如果您想要特定的输出格式,请使用

检查此链接,以便更好地使用。我尝试过现在选择()-“2010-02-21 20:11:32”;但是我得到了一个语法错误:意外的T_字符串。有什么想法吗?对不起,我对这个太陌生了@MarsJ:对我有用(PostgreSQL 9.1),我敢肯定它在千年之交可以与任何其他版本的PostgreSQL一起使用。“错误:意外的T_字符串”不是PostgreSQL错误消息。看起来像PHP。未转义单引号可能有问题?@MarsJ:您可能必须将字符串转换为时间戳:
SELECT NOW()-'2010-02-21 20:11:32'::timestamp@MarsJ:这在没有施法的情况下有效(而施法永远不会伤害到避免歧义)。这是一个PHP语法错误。
SELECT justify_interval(now() - '2010-02-21 20:11:32');
2 years 3 mons 20 days 23:01:34.095813