我目前正在开发一个平台,在该平台上我需要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
我希望有人可以帮助或指出正确的方向:)
最诚挚的问候!
答案 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