0
使用MySQL和PHP 5.3PHP5.x和MySQL:如何判断MySQL中的日期时间是否比现在时间早一段时间?
我有一个名为last_accessed
的MySQL DATETIME字段。它的格式为yyyy-mm-dd hh:mm:ss
我想检查last_accessed
中的值是否大于30分钟,而不是now
。 如果是这样,我想要一个名为$stillInTime
的变量为false
。否则,它是true
。
我需要知道什么是用PHP编写比较的最佳方法。最好的是,我的意思是最可读的代码块。
我使用date_default_timezone_set('UTC');
的代码块应该是灵活的,允许使用的分钟,小时,天,月,年单位比较。
下面我有一个尝试:
public function isInTime($datetimeInMySQL, $intervalInString = '30 minutes') {
$mySQLDateTimeObject = new DateTime($datetimeInMySQL);
$dateTimeInterval = date_interval_create_from_date_string($intervalInString);
$nowDateTimeObject = new DateTime('now');
$mySQLDateTimeObject->add($dateTimeInterval);
$stillInTime = ($mySQLDateTimeObject > $nowDateTimeObject);
return $stillInTime;
}
这是我尝试了我的问题。我希望通过StackOverflow寻求更好的答案。
谢谢你写的,但我想避免把逻辑在MySQL查询。这将是我最后的手段。我可能会*将查询表达式打包成一个变量,供我的数据源对象使用。 –
@kimsia - 为什么要避免在MySQL中的逻辑?逻辑更接近数据,因此你可以获得更好的性能。如果您使用存储过程作为访问数据库的唯一机制,那么更好。这样可以更容易地检查你的查询(因为它们在一个地方)与你的索引。这还具有将业务逻辑集中在一个地方并确保数据保持一致的优势。毕竟在公司里,数据库是最重要的资产之一,如果它被损坏(即不一致),那么纠正就非常困难而且代价高昂。 –
我偏爱像CakePHP和Symfony这样的框架,因此我倾向于避免将逻辑放在MySQL –