要从MySQL中的某个日期提取一周,有几个选项,但我从实现的角度询问WEEK(date, 0)
和DATE_FORMAT(date, '%U')
之间是否存在差异。
我的意思是,2个函数返回相同的结果,但在后台,是否是相同的实现?有人打电话给对方吗?有没有被弃用的?
我在没有找到任何答案的情况下搜索了MySQL date and time functions documentation。谢谢你的启发!
注意:根据你想要的输出,你应该使用一个或另一个不同的参数(0到52周或0到53?周日或周一开始?第一周至少3天?),但我问的是这个特例。
答案 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()返回一个字符值。
这是基本差异。