MySQL中的WEEK()和DATE_FORMAT()函数之间有区别吗?

MySQL中的WEEK()和DATE_FORMAT()函数之间有区别吗?,mysql,function,date,Mysql,Function,Date,要从MySQL中的日期提取一周,有几个选项,但我想问的是,从实现的角度来看,week(date,0)和date\U格式(date,'%U')之间是否有区别 我的意思是,这两个函数返回相同的结果,但是在后台,它是相同的实现吗?一个打电话给另一个吗?有不推荐的吗 我找遍了这本书,没有找到任何答案。谢谢你的启发 注意:根据您对输出的要求,您应该使用一个或另一个不同的参数(0到52周或0到53周?从星期日或星期一开始?第一周至少有3天?),但我要问的是这个特殊情况。正如评论员所说,week()似乎是通用

要从MySQL中的日期提取一周,有几个选项,但我想问的是,从实现的角度来看,
week(date,0)
date\U格式(date,'%U')
之间是否有区别

我的意思是,这两个函数返回相同的结果,但是在后台,它是相同的实现吗?一个打电话给另一个吗?有不推荐的吗

我找遍了这本书,没有找到任何答案。谢谢你的启发

注意:根据您对输出的要求,您应该使用一个或另一个不同的参数(0到52周或0到53周?从星期日或星期一开始?第一周至少有3天?),但我要问的是这个特殊情况。

正如评论员所说,week()似乎是通用日期格式()函数的快捷方式。 另外,正如@nos提到的,date_format()返回一个字符串(我猜是由于它的一般行为),而week()返回一个整数

我想通过调查来验证这个理论,并研究了源代码。 这两个函数在文件中实现

  • 日期\格式调用生成\日期\时间,已实现
  • 一周导致
你猜怎么着?它们都会导致sql_time.cc中的
因此,
week(date)
实际上不是
date\u格式(date,'%v')
的快捷方式,但它们都在从输入计算参数后调用相同的函数。

不同之处在于它们返回不同的数据类型。WEEK()返回一个整数,而DATE_FORMAT()返回一个字符值


这是一个基本的区别。

您可能需要查看这个的源代码。。。您想知道的具体原因是什么吗?大多数日期函数只是指向更大的
date\u format()
调用的快捷方式。年份()->
date\u格式('Y')
等等。“year()”比“date_format()”的格式代码更容易记住time@Pekka我不是MySql专家,所以我想学习,知道哪一个更适合使用。@Baztoune fair。。。他们似乎在做同样的事情,正如@Marc所说,他们可能只是捷径。使用WEEK()应该可以。DATE_格式生成字符串/文本,而WEEK()生成整数,这是一个区别。