最大int值结果函数time()

时间:2019-04-30 22:21:14

标签: php mysql

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

我之所以这样问,是因为通过将数字保存为int值,可以很容易地将其与“ time();”的其他结果进行比较。 (如果我理解正确,它将始终返回一个int值)。

谢谢

1 个答案:

答案 0 :(得分:2)

截至PHP manual

  

返回以Unix纪元(1970年1月1日00:00:00 GMT)以来的秒数为单位的当前时间。

因此,最好在MySQL数据库中使用DATETIME类型并将其转换为有效格式后保存时间戳。为此,我将使用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

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

如果需要比较其他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');

瞧!