mysql:查找2017年所有有日期的星期五

de90aj5v  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(335)

我想要一个mysql查询,它将获取2017年所有星期五的日期。
我知道同样的sql查询是:

SELECT Fridays = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num)
FROM (SELECT TOP 366 num = ROW_NUMBER() OVER(ORDER BY a.NAME)-1 FROM dbo.syscolumns a, dbo.syscolumns b) n
WHERE DATENAME(weekday, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num)) = 'Friday'

我正在寻找一个mysql的替代品相同。
谢谢。

yr9zkbsy

yr9zkbsy1#

mysql在版本8之前没有行数函数。在版本8之前,行数可以用变量来模拟。

select s.num , date_add(str_to_date(concat('2016','/','12','/','31'),'%Y/%m/%d'), interval s.num day) dt,
            dayname(date_add(str_to_date(concat('2016','/','12','/','31'),'%Y/%m/%d'), interval s.num day)) dy
from
(
select @num:=@num + 1 num from information_schema.columns,(select @num:=0) n
limit 35
) s
where dayname(date_add(str_to_date(concat('2016','/','12','/','31'),'%Y/%m/%d'), interval s.num day)) = 'Friday';

schema.columns的信息类似于dbo.syscolumns。

------+------------+--------+
| num  | dt         | dy     |
+------+------------+--------+
|    6 | 2017-01-06 | Friday |
|   13 | 2017-01-13 | Friday |
|   20 | 2017-01-20 | Friday |
|   27 | 2017-01-27 | Friday |
|   34 | 2017-02-03 | Friday |
+------+------------+--------+
5 rows in set, 2 warnings (0.26 sec)
lyfkaqu1

lyfkaqu12#

这是mysql中sql逻辑的精确转换

SELECT DATE_ADD(MAKEDATE(year(now()),1), INTERVAL @num:=@num+1 DAY)
From (select @num:=-1) num
where DAYNAME(DATE_ADD(MAKEDATE(year(now()),1), INTERVAL @num:=@num+1 DAY))="Friday"
limit 365
z4bn682m

z4bn682m3#

SELECT * FROM table WHERE ([date] BETWEEN date_start and date_end) AND 
DAYNAME([date])='Friday'

查询来源:获取两个日期之间每周五的数据

相关问题