我已经找到了解决我的“问题”的适当方法,但是即使在阅读了mysql页面之后,我也不明白它背后的逻辑。
目前,我将注册信息存储在我的系统中的一个表(YYYY-MM-DD hh:mm:ss)中的"datetime“格式化字段中。
当我想在我的php页面上显示数据时,只需简单地发布准确的字段数据就可以显示上面提到的格式。
我认为,只要使用date("Y-m-d",$row["DATE"]),其中$row["DATE"]对应于特定的行值,就会返回所需的格式。
相反,我必须使用:date("Y-m-d", strtotime($row["DATE"]))。
为什么会这样呢?首先,我的$row["DATE"]字段不是字符串。我应该能够简单地重新排列存储在datetime字段中的数据吗?这不是重建我的整个表集的目的吗?
发布于 2010-09-22 16:11:22
MySQL有一个名为格式化的内置函数,您可以使用它来显示您想要的日期。
SELECT DATE_FORMAT(date_field, '%Y-%m-%d') as date_field FROM table_name手册有格式列表和以这种方式显示它所需的变量。使用这种方法,将不需要让PHP转换它等。此外,它在PHP方面的代码较少,因为一些MySQL可以很容易地处理。
编辑
抱歉,刚读到你在找解释。
PHP的date函数接受MySQL没有使用的UNIX时间戳。MySQL使用真正的日期格式IE:YYYY-MM-DD HH:MM:SS,如您所知,这将在数年后兼容。UNIX时间戳的范围有限,从1969年到2037年,它是有效的,这使得它对于诸如聊天框消息或预期它们不会出现的项目的“时间戳”非常有用,在这些日期之前,MySQL DATETIME不应该消失,直到年份更改为5位数或世界末日。
阅读UNIX时间戳上的WIKI,了解更多有关它的信息。
发布于 2010-09-23 08:20:51
MySQL确实允许您选择Unix时间戳格式的日期,这样就可以更容易地在PHP中使用日期,这完全是您所要求的。
之前的答案似乎忽略了这一点,或者由于unix时间戳的范围限制而忽略了这一点,但是如果这是您想要的.
SELECT UNIX_TIMESTAMP(datefield) as u_datefield FROM table将给出时间戳格式的日期,您可以按照PHP中的建议使用该日期:
<?php
$showdate = date("Y-m-d",$row['u_datefield']);
?>正如前面的答案所示,unix时间戳确实有一个有限的范围,因此,如果您需要在1970年之前或2038年之后的日期,它可能不适合,但对于今天的日常使用,它是很好的。
与日期字符串相比,使用时间戳的主要优点是可以添加和减去时间戳,这对于字符串格式的日期来说要困难得多。
https://stackoverflow.com/questions/3771232
复制相似问题