我希望在给定日期之前使用以下规则获取MySQL的周数和年份:
我已经阅读了MySQL中的周函数,但我无法得到我想要的结果。
Date and Time Functions: WEEK(date[,mode])
我在法国日历上,所以我必须在星期一开始这一周,而第1周是今年超过3天的第一周。
因此我只能使用选项1和3。
当我写下面的查询时:
选择周('2012-12-31',3),结果为1
选择周('2012-12-31',1),结果为53
当我在2016年1月1日进行测试时:
选择周('2016-1-1',3),结果为53
选择周('2016-1-1',1),结果为0
不能使用选项1,因为我无法检测到2012-12-31是否在明年。
可以使用选项3,但我添加了两个逻辑:如果weeknumber = 1,month = 12,year + 1,如果weekumber = 53,month = 1则是year - 1
有人有更好的解决方案吗?
此致
答案 0 :(得分:2)
好的,我想我得到了你现在要做的事。
正如文件所说:
我们决定返回0,因为我们希望函数返回 “特定年份的周数。”
如果您想要本周所在年份的周数,他们建议使用YEARWEEK()
function,它采用与WEEK()
相同的模式参数:
如果您希望对结果进行评估 包含给定日期的一周的第一天的年份... 使用
YEARWEEK()
函数:
mysql> SELECT YEARWEEK('2000-01-01');
-> 199952
mysql> SELECT MID(YEARWEEK('2000-01-01'),5,2);
-> '52'
所以你使用的一些例子:
mysql> SELECT MID(YEARWEEK('2012-1-1',3),5,2)
-> '52'
mysql> SELECT MID(YEARWEEK('2012-12-31',3),5,2)
-> '01'