在PostgreSQL中使用INTERVAL来添加小时日期/时间

时间:2014-05-22 06:29:41

标签: php html database postgresql datetime

以下是我试图运行的PostgreSQL中的代码:

select DATE_ADD(whenbooked,INTERVAL 4 HOUR) from booking WHERE id = 12310;

或者我尝试运行此代码:

select DATE_ADD('2010-11-19 01:11:22',INTERVAL 4 HOUR)

两个代码以相同的方式存储日期/时间:

  

2010-11-19 01:11:22

PostgreSQL错误代码是这样的:

  

错误:语法错误处于或接近“4”

指的是'INTERVAL 4 HOUR'行中的'4'。

我无法弄清问题是什么。

我需要将时间/标记(以与上面完全相同的格式编写)与存储的时间/日期加4小时进行比较。 因此,期望的最终结果是返回:'2010-11-19 05:11:22'

如果可以在PHP中直接在SQL中完成?

3 个答案:

答案 0 :(得分:3)

根据您的评论

  

我只是将这些代码输入 PgAdmin。

看起来你实际上在使用PostgreSQL而不是MySQL。

您可以在PostgreSQL here上查看在PostgreSQL上运行的现有代码,它会产生与您相同的错误。

要正确使用PostgreSQL中的日期,您可以在PostgreSQL上查看日期函数列表documentation site here

你要做的是:

SELECT TIMESTAMP '2010-11-19 01:11:22' + INTERVAL '4 HOURS';

答案 1 :(得分:0)

我发现了一种适用于PHP的方法:

$desiredEndTime = strtotime("2010-11-19 01:11:22 + 10 hours");
echo date("Y-m-d H:i:s", $desiredendtime);

看起来它将日期/时间转换为奇怪的整数。然后在第二行将其转换回我想要的格式。现在我可以将其插回到SQL中。

谢谢!

答案 2 :(得分:0)

使用“strtotime”方法将其简单地转换为时间戳,然后您可以随心所欲地做任何事情