SQL查询在哪里日期=今天减7天
我有一个SQL表格命中我的网站称为ExternalHits。我将URL追踪为URLx,并将该页面的日期作为Datex进行访问。我每周都会运行这个查询来获得前一周总访问数,而且每个星期我都必须手动更改“之间”日期。有什么方法可以改变我的查询,以便“之间”日期类似今天和今天7? Ijust希望不必每周都手动更改日期。SQL查询在哪里日期=今天减7天
SELECT URLX, COUNT(URLx) AS Count
FROM ExternalHits
WHERE datex BETWEEN '02/27/2017' AND '03/05/2017'
GROUP BY URLx
ORDER BY Count DESC;
declare @lastweek datetime
declare @now datetime
set @now = getdate()
set @lastweek = dateadd(day,-7,@now)
SELECT URLX, COUNT(URLx) AS Count
FROM ExternalHits
WHERE datex BETWEEN @lastweek AND @now
GROUP BY URLx
ORDER BY Count DESC;
这正是我需要的!谢谢! –
使用内置的功能:
SELECT URLX, COUNT(URLx) AS Count
FROM ExternalHits
WHERE datex BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()
GROUP BY URLx
ORDER BY Count DESC;
您可以使用CURDATE()
和DATE_SUB()
功能来实现这一目标:
SELECT URLX, COUNT(URLx) AS Count
FROM ExternalHits
WHERE datex BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()
GROUP BY URLx
ORDER BY Count DESC;
您可以从当前日期减去7与此:
WHERE datex BETWEEN DATEADD(day, -7, GETDATE()) AND GETDATE()
使用以下命令:
WHERE datex BETWEEN GETDATE() AND DATEADD(DAY, -7, GETDATE())
希望这有助于。
你必须交换之间的参数。 – Polluks
使用dateadd从当前日期中删除一周。
datex BETWEEN DATEADD(WEEK,-1,GETDATE()) AND GETDATE()
你必须交换之间的参数。 – Polluks
哎呀,修好了,谢谢 –
如果这是SQL Server中,'之间的转换(日期,GETDATE())AND DATEADD(DD,-7,CONVERT(日期,GETDATE()))'。你的标签有冲突。这是MySQL还是Microsoft SQL Server? –
有了冲突的标签,这几乎不可能回答。 mysql和sql server的语法差别很大。 –
固定。我的错。这是SQL Server。 –