我需要保存php“ time();”返回的值。 mysql表中的函数。 当我在表中创建一个int字段时,将请求int值的最大长度。 我想问你建议在int的类型声明中包含什么值。
我之所以这样问,是因为通过将数字保存为int值,可以很容易地将其与“ time();”的其他结果进行比较。 (如果我理解正确,它将始终返回一个int值)。
谢谢
答案 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');
和瞧!