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


Getting Current Time/Date - Saving To SQL Database

我有一个应用程序,张贴到一个PHP脚本,我希望PHP脚本基本上抓住当前的时间和日期,并将其插入到我的SQL数据库。

我目前通过使用' $time() '在PHP中这样做,然后传递到我的SQL数据库。为了检索时间和日期,我使用' gmdate("M d Y H:i:s", $time); '。

我有几个问题:

  • 当我测试这个时,它节省的时间落后了一个小时,所以我如何应用不同的时区?(我目前在伦敦/英格兰)-但对于使用此应用程序的用户来说,情况可能不是这样。

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

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

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

我很抱歉,如果这是一个新手的问题,但是有太多的时间和日期类和函数的PHP和SQL,我的大脑已经过载!

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

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

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

    获取当前日期()

这将自动设置时间,而不需要你做任何特殊的操作。

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

这样做可以确保时间正好是记录被设置的时间。

PHP Time()函数返回EPOCH时间(从1970年1月1日00:00:00 GMT开始的秒数)。

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

如果用户在不同的时区,你可以通过你的应用程序为用户设置这个。

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

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

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

继该页面的例子,但用于UPDATE:UPDATE orders set OrderDate=NOW() WHERE OrderId=9999

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";