首页 > 解决方案 > 最大 int 值结果函数 time()

问题描述

我需要保存 php "time();" 返回的值 mysql表中的函数。当我在表中创建一个 int 字段时,会请求 int 值的最大长度。我想问你建议在 int 的类型声明中包含什么值。

我问你这个是因为,通过将数字保存在 int 中,很容易将它与“time();”的其他结果进行比较。(如果我理解正确,它总是返回一个 int 值)。

谢谢

标签: phpmysql

解决方案


PHP 手册开始:

返回自 Unix 纪元(格林威治标准时间 1970 年 1 月 1 日 00:00:00)以来以秒数测量的当前时间。

因此,最好在 MySQL 数据库中使用DATETIMEtype 并在将时间戳转换为有效格式后保存时间戳。为此,我会使用DateTime. new DateTime如果你只使用而不是更好time(),因为DateTime在构造函数中需要时间,默认情况下是now

public DateTime::__construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

如果您要使用 Doctrine 2,那就足够了。否则,您必须在插入之前格式化 DateTime 对象:

$dt = new DateTime();
$dt->format('Y-m-d H:i:s');

这将产生类似的东西

2019-04-30 15:34:16

DATETIME对于您在 mysql 数据库中的类型,这是完全有效的格式。

如果您需要比较其他 DateTime 对象,您可以随时使用DateTime::diff

public DateTime::diff ( DateTimeInterface $datetime2 [, bool $absolute = FALSE ] ) : DateInterval

这对于使用 DateTimes 及其比较的智能和可表示的操作来说已经足够了。


编辑:

正如你所写

好的,我将 db 字段转换为“DATETIME”字段。但是现在我无法将表格字段的结果与 DateTime() 对象进行比较。您知道如何将表格字段转换为可与 DateTime () 对象进行比较吗?

您需要根据DateTime数据库中的数据创建对象。它是通过使用来实现的createFromFormat

public static DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] ) : DateTime

所以你要做的是:

$dt = DateTime::createFromFormat('Y-m-d H:i:s', '2019-04-30 15:34:16');


推荐阅读