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

时间:2011-02-16 18:04:00

标签: mysql function date

要从MySQL中的某个日期提取一周,有几个选项,但我从实现的角度询问WEEK(date, 0)DATE_FORMAT(date, '%U')之间是否存在差异。

我的意思是,2个函数返回相同的结果,但在后台,是否是相同的实现?有人打电话给对方吗?有没有被弃用的?

我在没有找到任何答案的情况下搜索了MySQL date and time functions documentation。谢谢你的启发!

注意:根据你想要的输出,你应该使用一个或另一个不同的参数(0到52周或0到53?周日或周一开始?第一周至少3天?),但我问的是这个特例。

2 个答案:

答案 0 :(得分:2)

正如评论员所说,week()似乎是一般date_format()函数的捷径。 另外,正如@nos所提到的,date_format()返回一个字符串(由于它的一般行为,我猜),虽然week()返回一个整数。

我想调查验证该理论,并查看源代码。 这两个函数在item_timefunc.cc文件中实现。

猜猜是什么?它们都导致sql_time.cc中的calc_week function 因此,week(date)实际上不是date_format(date, '%v')的快捷方式,但在从输入计算参数后,它们都调用相同的函数。

答案 1 :(得分:1)

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

这是基本差异。