获取当前时间/日期 - 保存到SQL数据库

时间:2014-07-02 19:57:10

标签: php sql date time

我有一个发布到PHP脚本的应用程序,我希望PHP脚本基本上获取当前时间和日期,并将其插入到我的SQL数据库中。

我目前正在使用' $time()'在PHP中,然后将其传递到我的SQL DB中。为了检索时间和日期,我使用' gmdate("M d Y H:i:s", $time);'。

我有几个问题:

  • 当我测试它时,它节省的时间落后一小时,那么我该如何应用不同的时区? (我目前在伦敦/英格兰) - 但对于使用此应用程序的用户而言可能并非如此。

  • PHP从哪里检索时间?它是本地的吗?从服务器?

  • 在我的SQL中,我应该将数据类型设置为什么?时间戳?目前,我已将其设置为varchar - 但由于所有这些不同的日期和时间类型,我不太确定? (日期,日期时间,时间,时间戳)。

每次用户打开应用程序时都会调用此PHP,因此我希望能够看到:'啊,所以我看到该用户在14日星期三21:20打开了应用程序。

对不起,如果它是一个noob问题,但是我的大脑已经过载了PHP和SQL这么多的时间和日期类和函数!

4 个答案:

答案 0 :(得分:0)

首先,PHP时间从它正在运行的服务器上获取时间。

但是如果您真的想要插入记录的时间,您应该执行以下操作之一:

  1. 在datetime类型的表中创建一个字段,并将默认值设置为:

    GETDATE()

  2. 这将自动设定时间,而不必做任何特别的事情。

    1. 如果您在输入时需要,仍然使用SQL:

      更新[tablename]设置LastUpdate = GETDATE()

    2. 这样做可以确保时间恰好是设置记录的时间。

答案 1 :(得分:0)

PHP Time()函数返回EPOCH时间(自1970年1月1日00:00:00 GMT以来的秒数)。

您可以使用date_default_timezone_set()以及strftime()mktime()将其转换为当地时间的服务器。

如果用户位于不同的时区,您可以通过您的应用程序设置此项。

我链接了上面列出的每个函数的PHP手册页。

答案 2 :(得分:0)

如何在MySQL表结构上创建一个DateTime字段并使用MySQL来获取和设置NOW()的日期?让MySQL做大多数计算,它将帮助您优化PHP脚本的响应时间。

请看这个例子:http://www.w3schools.com/sql/func_now.asp

按照该页面的示例,但是对于UPDATE:  UPDATE orders set OrderDate=NOW() WHERE OrderId=9999

答案 3 :(得分:0)

Setting Timezone will fix the issue. I guess.

$date = date_create('2000-01-01', timezone_open('Pacific/Nauru'));
echo date_format($date, 'Y-m-d H:i:sP') . "\n";

date_timezone_set($date, timezone_open('Pacific/Chatham'));
echo date_format($date, 'Y-m-d H:i:sP') . "\n";