代码之家  ›  专栏  ›  技术社区  ›  cstack

有没有一种简单的方法可以从php中的SQL时间戳获取Unix时间戳?

  •  1
  • cstack  · 技术社区  · 15 年前

    $posts = mysql_query("SELECT * FROM Posts ORDER BY Created DESC");
    $array = mysql_fetch_array($posts);
    echo $array[Created];
    

    2 回复  |  直到 15 年前
        1
  •  12
  •   Community Reversed Engineer    4 年前

    strtotime() 将愉快地获取SQL时间戳并将其转换为UNIX时间:

    echo strtotime($array['Created']);
    

    请注意,在数组键周围不使用引号是不好的做法。 According to the docs :

    始终在字符串文字数组索引周围使用引号。例如,$foo['bar']是正确的,而$foo[bar]不是。

    这是错误的,但它是有效的。原因是这段代码有一个未定义的常量(bar),而不是字符串(“bar”-请注意引号)。PHP将来可能会定义常量,不幸的是,对于此类代码来说,这些常量具有相同的名称。它之所以有效,是因为PHP会自动将裸字符串(与任何已知符号都不对应的无引号字符串)转换为包含裸字符串的字符串。例如,如果没有定义名为bar的常量,那么PHP将替换字符串“bar”并使用它。

        2
  •  1
  •   Community Reversed Engineer    7 年前

    给定一个常规的datetime字段,您可以使用MySQL函数在查询中执行此操作 UNIX_TIMESTAMP ():

    $posts = mysql_query("SELECT *
                                 , UNIX_TIMESTAMP(Created)
                          FROM     Posts
                          ORDER BY Created DESC");
    

    mysql_fetch_array 返回查询结果的两个数字关联键。我觉得这是多余的,所以我想更具体地使用:

    $array = mysql_fetch_array($posts, MYSQL_ASSOC);
    

    此外,正如@Paolo Bergantino所指出的,引用您的回音将是一个很好的决定:

    echo $array['Created'];
    

    最后一条评论,您使用的是“选择*”-- it is worth reading discussion on the pros and cons of "SELECT *" syntax .