年/月/周至今的SQL查询

时间:2018-09-05 19:26:39

标签: mysql sql

我目前正在开发一个平台,在该平台上我需要3个SQL查询以返回到年/月/周之间的所有记录。

查询必须动态地工作,没有硬编码的日期,如果我将这些问题分为3个问题,请与我联系,我认为它们非常相关,这就是为什么我将所有3个放在这里的原因:)

1:年初至今

我根据有关年度至今的this问题尝试了此SQL查询,但收到错误:

对本地函数“ DATEDIFF”的调用中参数计数错误

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, coins_daily_volume
FROM coins_daily
WHERE coins_daily_date BETWEEN DATEADD(yy, DATEDIFF(yy,0,GETDATE()), 0) AND GETDATE()
ORDER BY coins_daily_date ASC

2:迄今为止的月份

我使用month函数尝试了其他事情,但无法弄清楚如何实现/构建正确的月份SQL查询。

3:迄今为止的一周

老实说,我不知道从哪开始。

可以正常使用1年

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, coins_daily_volume
FROM coins_daily
WHERE coins_daily_date >= DATE_ADD(NOW(),INTERVAL -1 YEAR
ORDER BY coins_daily_date ASC

我希望有人可以帮助或指出正确的方向:)

最诚挚的问候!

1 个答案:

答案 0 :(得分:2)

GETDATE()用于MsSQL。使用NOW()作为当前日期时间或curdate()作为当前日期。

年初至今:

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, 
coins_daily_volume
FROM coins_daily
WHERE YEAR(coins_daily_date) = YEAR(NOW())
AND coins_daily_date <= NOW()
ORDER BY coins_daily_date ASC

本月至今:

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, 
coins_daily_volume
FROM coins_daily
WHERE YEAR(coins_daily_date) = YEAR(NOW())
AND MONTH(coins_daily_date) = MONTH(NOW())
AND coins_daily_date <= NOW()
ORDER BY coins_daily_date ASC

本周至今:

SELECT coins_daily_date, coins_daily_high, coins_daily_low, coins_daily_close, 
coins_daily_volume
FROM coins_daily
WHERE YEAR(coins_daily_date) = YEAR(NOW())
AND WEEK(coins_daily_date) = WEEK(NOW())
AND coins_daily_date <= NOW()
ORDER BY coins_daily_date ASC