Php unix_时间戳日期和时差

Php unix_时间戳日期和时差,php,mysql,date,Php,Mysql,Date,我已将三个基本时间戳和时间存储到我的数据库表中,格式如下: mysql> select receivedtime, requesttime, sla from table; +---------------------+---------------------+----------+ | receivedtime | requesttime | sla | +---------------------+---------------------+-

我已将三个基本时间戳和时间存储到我的数据库表中,格式如下:

mysql> select receivedtime, requesttime, sla from table;
+---------------------+---------------------+----------+
| receivedtime        | requesttime         | sla      |
+---------------------+---------------------+----------+
| 2013-05-26 22:37:04 | 2013-05-26 12:37:04 | 02:59:59 |
| 2013-05-26 14:36:44 | 2013-05-21 12:39:09 | 72:00:00 |
+---------------------+---------------------+----------+
2 rows in set (0.00 sec)
我需要提出如下几个条件:

difference = (receivedtime - requesttime);

if [difference <= sla] 
{
   show meet
} else {
   show don't meet
}
我已经检查了
mysql的
UNIX\u TIMESTAMP()
,以及
php的strotime()
和其他一些尝试

我还检查了几个线程@stackoverflow.com,但我找不到合适的解决方案


任何想法

这是一个日期时间字段,而不是时间戳字段。你应该从读懂时间戳是什么开始

您可以通过转换为时间戳然后进行减法来计算差异

$recieved = strtotime($res['receivedtime']);
$requested = strtotime($res['requesttime']);
$difference = $recieved - $requested;
if($difference <= $sla){
  //do stuff
}
$received=strotime($res['receivedtime']);
$requested=strottime($res['requesttime']);
$difference=$received-$requested;

如果($difference这是一个日期时间字段,而不是时间戳字段。您应该从读取时间戳开始

您可以通过转换为时间戳然后进行减法来计算差异

$recieved = strtotime($res['receivedtime']);
$requested = strtotime($res['requesttime']);
$difference = $recieved - $requested;
if($difference <= $sla){
  //do stuff
}
$received=strotime($res['receivedtime']);
$requested=strottime($res['requesttime']);
$difference=$received-$requested;
如果($difference,您可以在SQL中执行此操作

SELECT (UNIX_TIMESTAMP(receivedtime) - UNIX_TIMESTAMP(requesttime)) AS difference FROM table
它以秒为单位给出差异。

您可以在SQL中实现这一点

SELECT (UNIX_TIMESTAMP(receivedtime) - UNIX_TIMESTAMP(requesttime)) AS difference FROM table
它以秒为单位显示差异。

检查和功能:

SELECT
    `receivedtime`,
    `requesttime`,
    `sla`,
    (SEC_TO_TIME(TIMESTAMPDIFF(SECOND, `requesttime`, `receivedtime`)) < `sla`) as `meet`
FROM
    `table`;
选择
`接收时间`,
`请求时间`,
`sla`,
(秒到秒时间(TIMESTAMPDIFF(秒,`requesttime`,`receivedtime`))<`sla`)为`meet``
从…起
`表`;
检查和功能:

SELECT
    `receivedtime`,
    `requesttime`,
    `sla`,
    (SEC_TO_TIME(TIMESTAMPDIFF(SECOND, `requesttime`, `receivedtime`)) < `sla`) as `meet`
FROM
    `table`;
选择
`接收时间`,
`请求时间`,
`sla`,
(秒到秒时间(TIMESTAMPDIFF(秒,`requesttime`,`receivedtime`))<`sla`)为`meet``
从…起
`表`;
试试看

选择receivedtime,
请求时间,
TIMESTAMPDIFF(秒、requesttime、receivedtime)<时间到秒(sla)时的情况
然后“满足”或“不满足”结束sla
来自表1
这里是演示

试试看

选择receivedtime,
请求时间,
TIMESTAMPDIFF(秒、requesttime、receivedtime)<时间到秒(sla)时的情况
然后“满足”或“不满足”结束sla
来自表1
这里是演示

试试这个

select TIMESTAMPDIFF(SECOND,`requesttime`,`receivedtime`) as timeDiff FROM `table` 
WHERE TIMESTAMPDIFF(SECOND,`requesttime`,`receivedtime`) > TIME_TO_SEC(`sla`)

你可以在

中找到相关信息,试试这个

select TIMESTAMPDIFF(SECOND,`requesttime`,`receivedtime`) as timeDiff FROM `table` 
WHERE TIMESTAMPDIFF(SECOND,`requesttime`,`receivedtime`) > TIME_TO_SEC(`sla`)


您可以在

中找到相关内容,请尝试从数据库中选择以下内容

select TIMESTAMPDIFF(SECOND, receivedtime, requesttime) as difference, TIME_TO_SEC(sla) as slasecs from table
然后你就可以做你的工作了

if [difference <= sla]
{
   show meet
} 
else 
{
   show don't meet
}

如果[difference尝试从您的数据库中这样选择

select TIMESTAMPDIFF(SECOND, receivedtime, requesttime) as difference, TIME_TO_SEC(sla) as slasecs from table
然后你就可以做你的工作了

if [difference <= sla]
{
   show meet
} 
else 
{
   show don't meet
}

if[difference]你说的
meet
是什么意思。你想在
meet
中得到什么?为什么
UNIX\u TIMESTAMP
不起作用?我的意思是
meet
是可以的,而
不满足
是不可以的,我认为我的执行是正确的。但是,我被
UNIX\u TIMESTAMP()
。现在我确认查询@CORRUPT answer确实正确。你所说的
meet
是什么意思。你想在
meet
中做什么?为什么
UNIX\U TIMESTAMP
不起作用?我的意思是
meet
是肯定的/好的,
不肯定的/不好的,我认为我的执行是正确的。但是,我对
U感到困惑NIX_时间戳()
。现在我确认查询@CORRUPT answer是正确的。我觉得没问题……谢谢老兄,我觉得没问题……谢谢老兄,什么都是varchar而不是timestamp@Deonia没什么,这只是测试的虚拟设置。如果这是否决投票的原因,我肯定可以纠正这一点。什么都是varchar而不是timestamp@Deonia没什么,这只是测试的虚拟设置。如果这是否决投票的理由,我肯定可以纠正这一点。。