Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';使用PHP和MySQL存储当前时间的推荐方法是什么?_Php_Mysql_Gmt - Fatal编程技术网

什么';使用PHP和MySQL存储当前时间的推荐方法是什么?

什么';使用PHP和MySQL存储当前时间的推荐方法是什么?,php,mysql,gmt,Php,Mysql,Gmt,我最初的做法是: $current = time(); // save this to column CURRENT_TIME with column type VARCHAR //retrieve it like this $retrieved = mysql_query(....) //assume query for getting the stored time value $time = strtotime($retrieved); 我遇到了以下方法: 使用gmstrftime处理

我最初的做法是:

$current = time(); // save this to column CURRENT_TIME with column type VARCHAR

//retrieve it like this
$retrieved = mysql_query(....) //assume query for getting the stored time value
$time = strtotime($retrieved);
我遇到了以下方法:

  • 使用
    gmstrftime
    处理gmt
  • 对列使用
    INT
    而不是
    VARCHAR
  • 使用mysql函数
    CURTIME
    CURDATE
  • 使用
    UNIX\u TIMESTAMP
    mysql函数
  • 它们都没有使用
    DATETIME
    TIMESTAMP
    mysql变量类型


    有更好的方法吗?

    好的,您可以使用
    strotime()


    然后,您只需创建一个函数,将PHP Time()值正确地转换为MySQL时间戳值。

    将其存储为int更符合逻辑。 保存日期的行格式,以后可以使用该行格式提取其他格式和更多数据。。 我还将其保存为int


    编辑:For(Uni TimeZone)application int是最快的方式,PHP有很好的时间转换工具。

    建议使用mysql时间戳(YYYY-MM-DD HH:MM:SS)字段类型在mysql中存储时间和日期变量

    $sDate = date("Y-m-d H:i:s"); // 2015-04-07 07:12:51
    mysql_query("insert into `table_name` set `created_on` = '$sDate'");
    
    它使您能够直接在mysql查询中使用来比较日期、计算时间差等

    此外,您还可以始终使用函数检索时间戳

    $result = mysql_query("select `created_on` from `table_name`");
    $row = mysql_fetch_row($result);
    $iTimestamp = strtotime($row[0]); // 1428390771
    

    MySQL使用的格式不需要与PHP使用的格式匹配。选择两边最好的。数据库具有日期数据类型是有原因的;在MySQL中,您可以从以下选项中进行选择:

    在PHP中,基本上有三个选项:

    • 好的旧时间戳很容易处理,您可以在MySQL查询中使用它们——请参见和——但它们存在严重的范围问题(您不能在1970年之前的日期使用它们,因此它们不适合生日)

    • 对象功能强大,内置,没有范围问题,支持时区。然而,它们有时使用起来并不舒服,因为它们似乎缺少一些重要的方法

    • 您可以使用自定义日期对象(基于第三方或您自己的日期时间)


    我只是在MySQL中使用
    时间戳
    值类型,让MySQL使用自己的
    当前时间戳
    ,将PHP time()值转换为MySQL时间戳的函数是?@Ygam:您可以使用MySQL的
    FROM_UNIXTIME()
    函数将存储转换为DB。如果您想在DB端进行转换,您也可以使用
    UNIXTIMESTAMP()
    来转换输出。@Ygam您可以在谷歌上搜索这个….:<代码>$mysqldate=date('Y-m-d H:i:s',$phpdate)我已经这样做了,但我正在寻找的解决方案是在mysql中使用时间戳作为数据类型,然后能够使用date()函数对其进行格式化:(Grrr…没有留下评论就投了反对票。然后,你从来没有为多个时区创建过站点。Tamp和date数据类型的发明有几个原因。另外,它让其他人知道数据是关于什么的。因此,要将其存储在数据库中,我需要使用date('YYYY-MM-DD HH:ii:ss),以便它可以与mysql时间戳兼容?(因为我尝试了其他格式,列仍然是0000-00-00:00:00)我编辑了答案。看一看。同时查看