我为一家致力于技术支持的呼叫中心工作,我们的拨号器使用MySQL编写的过滤器。我是一个完整的新手,无论我尝试多少教程,都无法绕过它。
我在手册中找到的唯一例子是:
called count >= 7
这只会在7次或更多次尝试时调用潜在客户。
上述语法会对SELECT
和WHERE
语句进行编辑,因为显然过滤器只是附加到标准查询的WHERE
语句。
我们有一个名为entry_date的字段,格式为11/17/2015 9:48:16 AM
(与我们所有的日期条目一样)我试图按当前日期超过30天的结果进行过滤。
我试过
entry_date - NOW() >= 30
它不起作用:(
非常感谢任何帮助。
赖安
答案 0 :(得分:2)
以下是VICIdial
过滤器的一个真实示例,该过滤器用于防止NI(Not Interested)
状态线索在最后一次通话后的30天内被dialed
阻止:
( ( (status='NI') and (last_local_call_time < CONCAT(DATE_ADD(CURDATE(), INTERVAL -30 DAY),' ',CURTIME()) ) ) or (status != 'NI') )
答案 1 :(得分:1)
如果日期格式存在于您指定的数据库中,则可能会出现问题。如果entry_date
是日期时间字段,则以下内容将在过去30天内选择。
entry_date > NOW() - INTERVAL 30 DAY
答案 2 :(得分:1)
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)
答案 3 :(得分:0)
正如@Sean所建议的那样,MySQL日期时间格式为yyyy-mm-dd hh:mm:ss 因此,您首先必须使用STR_TO_DATE函数
来转换日期时间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以获取进一步的参考。
答案 4 :(得分:0)
如果您要拨打过去30天未拨打的电话,请尝试。
export class AppComponent {
data = [
{ state: 'MN', county: '1', item: 0.297 },
{ state: 'MN', county: '1', item: 0.04 },
{ state: 'MN', county: '3', item: 0.14 },
{ state: 'CA', county: '2', item: 0.019 },
{ state: 'MN', county: '1', item: 0.0374 },
{ state: 'CA', county: '2', item: 0.037 },
{ state: 'CA', county: '3', item: 0.14 }
];
dataExt: any[] = [];
constructor() {
this.processData();
}
private processData() {
const statesSeen = {};
const countiesSeen = {};
this.dataExt = this.data.sort((a, b) => {
const stateComp = a.state.localeCompare(b.state);
return stateComp ? stateComp : a.county.localeCompare(b.county);
}).map(x => {
const stateSpan = statesSeen[x.state] ? 0 :
this.data.filter(y => y.state === x.state).length;
statesSeen[x.state] = true;
const countySpan = countiesSeen[x.state] && countiesSeen[x.state][x.county] ? 0 :
this.data.filter(y => y.state === x.state && y.county === x.county).length;
countiesSeen[x.state] = countiesSeen[x.state] || {};
countiesSeen[x.state][x.county] = true;
return { ...x, stateSpan, countySpan };
});
}
}