对于Vicidial MySQL的过滤器

问题描述 投票:3回答:5

我的呼叫中心做技术支持工作,我们的拨号器使用的是写在MySQL的过滤器。我是一个完整的新手,并围绕它不能完成我的头,无论我有多少教程尝试。

我可以在手册中找到的唯一的例子是:

called count >= 7

这只会调用带有7次或更多的尝试的线索。

上述语法重新编辑的SELECTWHERE语句,因为显然过滤器仅仅是附加到标准查询WHERE声明。

我们有一个叫做ENTRY_DATE它是11/17/2015 9:48:16 AM的格式字段(就像我们的所有日期的条目),我试图通过结果不是从当前日起30日内更大的过滤。

我试过了

entry_date - NOW() >= 30

而且它不工作:(

任何援助将非常感激。

瑞安

php mysql
5个回答
2
投票

这是用来防止VICIdial状态从内的最后一次通话后的30天内被NI(Not Interested)导致一个dialed过滤器的一个真实的例子:

( ( (status='NI') and (last_local_call_time < CONCAT(DATE_ADD(CURDATE(), INTERVAL -30 DAY),' ',CURTIME()) ) ) or (status != 'NI') )

1
投票

如果存储在数据库中,你表明你可能有您的日期格式的问题。如果entry_date是一个时间字段下面将在过去30天中进行选择。

entry_date > NOW() - INTERVAL 30 DAY

1
投票

是的,好了,mysql的日期函数是有点匪夷所思。这里是计算日期在过去30天的方式:

mysql> select DATE_SUB(CURDATE(), INTERVAL 30 day) as past;
+------------+
| past       |
+------------+
| 2015-10-20 |
+------------+

我猜你需要将时间戳转换你的entry_date领域只是一个普通的日期没有时间,像这样的:

DATE(entry_date)

所以后来我猜想,让所有的记录超过30天将是:

DATE(entry_date) < DATE_SUB(CURDATE(), INTERVAL 30 day)

0
投票

正如@Sean建议,MySQL的日期时间格式为yyyy-MM-DD HH:mm:ss的,所以你必须首先使用STR_TO_DATE功能CONVER您的日期时间的MySQL日期时间

STR_TO_DATE(entry_date, '%Y-%m-%d');

然后使用DATE_SUB功能,你可以找到从当前日期最近30天

DATE_SUB(CURDATE(),INTERVAL 30 DAY)

所以,你的病情会

STR_TO_DATE(entry_date, 'Y-m-d') < DATE_SUB(CURDATE(),INTERVAL 30 DAY)

请参阅MySQL Date and Time Functions以备将来参考。


0
投票

如果你想拨打电话,这不是在最近30天称为再试试。

last_local_call_time < DATE_SUB(NOW(), INTERVAL 30 DAY)
© www.soinside.com 2019 - 2024. All rights reserved.