MySQL如何选择日期字段正好在今天的7天前,时间为最后1小时

MySQL如何选择日期字段正好在今天的7天前,时间为最后1小时,mysql,Mysql,我有一个查询,从当前时间选择过去1小时内创建的记录 select ts from <table_name> where ts >= DATE_SUB(NOW(), interval 1 hour); 我还可以使用选择7天前的日期 选择计数*从中ts>=日期\子项,间隔7天 如何使用这两个日期功能在今天起7天之前和当前时间起1小时之前获取记录 select ts from <table_name> where ts >= DATE_SUB(NOW(), int

我有一个查询,从当前时间选择过去1小时内创建的记录

select ts from <table_name> where ts >= DATE_SUB(NOW(), interval 1 hour);
我还可以使用选择7天前的日期

选择计数*从中ts>=日期\子项,间隔7天

如何使用这两个日期功能在今天起7天之前和当前时间起1小时之前获取记录

select ts from <table_name> where ts >= DATE_SUB(NOW(), interval 1 hour);
例如,如果当前时间为2015-11-06 10:03:00,那么如何获取2015-10-30 09:03:00到2015-10-30 10:03:00之间的时间数据

我尝试了类似的方法,但出现语法错误:

select ts from <table_name> where ts >= DATE_SUB(DATE(NOW()), INTERVAL 7 DAY), interval 1 hour)
select ts from <table_name> where ts >= DATE_SUB(NOW(), INTERVAL 7 DAY), interval 1 hour)

您的示例有语法错误,右括号太多。如果要使用DATE_SUB,则需要使用它两次。要在一次和另一次之间获取条目,请使用WHERE。。。之间而且

您可以使用以下选项:

SELECT ts
FROM iv_split_skill_metrics
WHERE ts BETWEEN
    DATE_SUB(
        DATE_SUB(DATE(NOW()), INTERVAL 7 DAY),
        interval 1 hour)
    AND
    DATE_SUB(DATE(NOW()), INTERVAL 7 DAY)
或者,更好的是,完全跳过日期,只做减法运算,如下所示:

SELECT ts
FROM iv_split_skill_metrics
WHERE ts BETWEEN NOW() - INTERVAL 7 DAY - INTERVAL 1 HOUR
    AND NOW() - INTERVAL 7 DAY
编辑:出于某种原因,在我发布这篇文章后,您编辑了您的问题,并将问题中的iv_split_skill_度量替换为,但上面的示例无论如何都会起作用。当然,只需使用正确的表名和列名


编辑2:我现在明白了,您希望在7天加1小时和7天之前输入。我已经调整了我的答案,向您展示了如何做到这一点。

您的示例有语法错误,右括号太多。如果要使用DATE_SUB,则需要使用它两次。要在一次和另一次之间获取条目,请使用WHERE。。。之间而且

您可以使用以下选项:

SELECT ts
FROM iv_split_skill_metrics
WHERE ts BETWEEN
    DATE_SUB(
        DATE_SUB(DATE(NOW()), INTERVAL 7 DAY),
        interval 1 hour)
    AND
    DATE_SUB(DATE(NOW()), INTERVAL 7 DAY)
或者,更好的是,完全跳过日期,只做减法运算,如下所示:

SELECT ts
FROM iv_split_skill_metrics
WHERE ts BETWEEN NOW() - INTERVAL 7 DAY - INTERVAL 1 HOUR
    AND NOW() - INTERVAL 7 DAY
编辑:出于某种原因,在我发布这篇文章后,您编辑了您的问题,并将问题中的iv_split_skill_度量替换为,但上面的示例无论如何都会起作用。当然,只需使用正确的表名和列名


编辑2:我现在明白了,您希望在7天加1小时和7天之前输入。我已经调整了我的答案,向您展示了如何做到这一点。

您的目标不是100%明确,只是我的尝试:

SELECT  ts 
FROM table_name 
WHERE ts >= DATE_ADD(DATE_ADD(NOW(), INTERVAL -7 DAY), INTERVAL -1 HOUR)
    AND ts <= DATE_ADD(NOW(), INTERVAL -7 DAY);

你的目标不是100%明确,只是我的尝试:

SELECT  ts 
FROM table_name 
WHERE ts >= DATE_ADD(DATE_ADD(NOW(), INTERVAL -7 DAY), INTERVAL -1 HOUR)
    AND ts <= DATE_ADD(NOW(), INTERVAL -7 DAY);