我之前发布了一个问题,该问题得到了正确回答,并让我发现我的YEARWEEK()函数使用默认模式为零,并且给了我不想要的结果。我阅读了YEARWEEK的手册,该手册引用了我关于模式的WEEK,它说,如果没有使用模式参数,则使用default_week_format值。我决定我想要模式6,所以我采取了必要的步骤将变量更改为6.但是,只有WEEK()函数受此更改的影响。
我得到以下结果:
SELECT YEARWEEK(NOW())
201301
SELECT YEARWEEK(NOW(), 6)
201302
SELECT WEEK(NOW())
2
SELECT WEEK(NOW(), 6)
2
这是MySQL的问题还是我做错了什么?我阅读了几本手册,并在YEARWEEK描述中明确指出“模式参数与WEEK()的模式参数完全相同”。但是,它没有特别说明(如在WEEK描述中那样),“如果省略mode参数,则使用default_week_format系统变量的值”。
如果没有提供变量值,YEARWEEK()是否应该使用变量的值,或者我在这方面是错的?在我看来,这两个函数的行为应该相同,特别是因为其中一个引用了另一个函数的特定部分。
答案 0 :(得分:1)
YEARWEEK()不应该使用变量的值,如果没有提供,或者我在这方面是错的吗?
否强>
虽然我理解了这个论点,但这是记录在案的,因此预期的行为。来自default_week_format
上的文档:
用于
WEEK()
功能的默认模式值。
因此,此系统变量仅用于WEEK()
。但是,如您所述,两个函数都允许week_format
作为第二个参数。因此,我建议您不要在服务器级别设置此项,但为了清晰起见,请在代码中设置。