Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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中,从SQL格式化时间戳的最简单方法是什么?_Php_Mysql_Formatting_Timestamp - Fatal编程技术网

在PHP中,从SQL格式化时间戳的最简单方法是什么?

在PHP中,从SQL格式化时间戳的最简单方法是什么?,php,mysql,formatting,timestamp,Php,Mysql,Formatting,Timestamp,完成下面PHP代码的最简单、最快的方法是什么,以便输出为用户友好的格式(例如,“2006年10月27日”) 我使用: 日期(“fj,Y”,strotime($row['myu timestamp'])) 或者您可以将SELECT更改为:DATE_格式(字段,'%d%M,%Y')作为datetime $result = mysql_query("SELECT DATE_FORMAT(my_timestamp, '%M %d, %Y) AS my_timestamp FROM some_table

完成下面PHP代码的最简单、最快的方法是什么,以便输出为用户友好的格式(例如,“2006年10月27日”)

我使用:

日期(“fj,Y”,strotime($row['myu timestamp']))


或者您可以将SELECT更改为:DATE_格式(字段,'%d%M,%Y')作为datetime

$result = mysql_query("SELECT DATE_FORMAT(my_timestamp, '%M %d, %Y) AS my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = $row['my_timestamp'];
echo $formatted_date;
或者使用PHP

$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = strftime('%B %d, %y', $row['my_timestamp']);
echo $formatted_date;
你想要这个功能


如果您有日期或日期时间列,可以使用SELECT UNIX_TIMESTAMP(mycolumn)作为mycolumn将其转换为UNIX时间戳,以供日期函数使用。

您可以选择。您可以在PHP中使用该函数并处理MySQL的输出,也可以在MySQL中使用该函数并让它返回一个格式化字符串作为开始


根据我的经验,使用哪一种并不重要,但要始终如一。它们有不同的格式参数,因此如果在给定的应用程序中同时使用这两个参数,那么您将花费大量时间试图记住“W”是否为您提供了一周中的哪一天或一年中的哪一周的名称。

我倾向于使用SQL进行日期格式设置,如“s”。虽然对于PHP日期,我更喜欢使用对象(PHP5+)而不是:

$timestamp=newdatetime($row['my_timestamp']);
echo$timestamp->format('fj,Y')。'
; echo$timestamp->format('fj,yg:ia');
您应该明确使用DateTime类(或任何家庭成长的等效类)、over de Date函数,而不是使用时间戳:

  • 对于1970年之前的日期,时间戳并不能在所有环境中都很好地工作——如果您处理生日,您依赖的代码可能会在某些服务器上中断
  • 还要非常小心strftime的使用,它看起来是一个不错的函数,但它非常不可解析,因为它依赖于进程范围的setlocale。这意味着,如果您的服务器是一个windows机箱,那么每个处理器有一个进程,其余的是多线程的——换句话说,一个脚本中的一个setlocale将影响同一处理器上的其他脚本——非常讨厌

在一天结束时,不要依赖时间戳,除非你是在一个只有英语的环境中,并且只处理1970年到2032年之间的日期

如果在该日期字段上为表编制索引,并且在调用中使用mysql数据格式函数。。(即..选择日期格式(我的时间戳,%M%d,%Y)作为我的时间),它将破坏您的索引。要记住的东西。我们已经看到从sql语句中删除所有函数并让php处理所有函数的速度有了显著提高。
格式化日期和简单数学等功能让数据库为您进行格式化。它不太容易出错,因为您没有读取字符串并转换它。相反,数据库正在从其本机格式转换为字符串。

FYI,您的
DATE\u format()
示例中的format参数缺少右引号
$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = strftime('%B %d, %y', $row['my_timestamp']);
echo $formatted_date;
$timestamp = new DateTime($row['my_timestamp']);
echo $timestamp->format('F j, Y') . '<br />';
echo $timestamp->format('F j, Y g:ia');