我有一个系统,可以按设定的频率检查网站上的某些数据。每个网站在crawl_frequency
列中都有自己的检查频率。此值以天为单位。
我有一张这样的桌子
CREATE TABLE `websites` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`domain` VARCHAR(191) NOT NULL COLLATE 'utf8mb4_unicode_ci',
`crawl_frequency` TINYINT(3) UNSIGNED NOT NULL DEFAULT '3',
`last_crawled_start` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
我想运行查询以查找新网站以指定的检查频率/间隔进行检查。目前,我有一个查询,如果将网站的crawl_frequency
设置为一天,该查询就可以正常工作。
SELECT domain
FROM websites
WHERE last_crawled_start <= (now() - INTERVAL 1 DAY)
LIMIT 1
MySQL查询中有任何方法可以为crawl_frequency
子句中的每一行使用WHERE
列中的值。
所以我想做个例子:
SELECT domain
FROM websites
WHERE last_crawled_start <= (now() - INTERVAL {{INSERT VALUE OF CRAWL FREQUENCY FOR THIS PARTICULAR WEBSITE}} DAY)
LIMIT 1
答案 0 :(得分:2)
您可以尝试使用DATEDIFF
函数,如下所示:
SELECT domain FROM websites
WHERE DATEDIFF(NOW(), last_crawled_start) > crawl_frequency
LIMIT 1;
答案 1 :(得分:2)
您可以这样做:
function boo(target: object, propertyKey: string) {
console.log("boo");
}
class A {
@boo
private str: string | null = null;
constructor() {
this.str = "test";
}
}
是的,真的。
答案 2 :(得分:1)
我为mysql阅读的所有内容都说它不能是变量,但是您可以使用其他函数,例如
SELECT * FROM websites
WHERE
(unix_timestamp() - unix_timestamp(last_crawled_start))/86400.0 > crawl_frequency