我正在从mongodb
将聚合数据导出到MS SQL服务器mongo的$ week不会与T-SQL datepart(wk,)或datepart(isowk)评估同一周。
有谁知道如何测试mongodb $ week函数,以便我可以进行一些比较,看看如何最好地解决这个问题?
任何帮助都将不胜感激。
答案 0 :(得分:1)
据我所知,差异分为两个主要方面,文件中描述了简单部分:
周从星期日开始,第1周从一年的第一个星期日开始。一年中第一个星期日之前的天数在第0周。此行为与strftime标准库函数的“%U”运算符相同。
所以这里的一般概念是返回的值将介于0和53之间,第0周定义为星期日之前的第一周。
所以从technet source {" datepart"来解释(因为文档错误的日子):
任何一年的1月1日定义星期datepart的起始编号,例如:DATEPART(周,' 1月1日,xxxx')= 1,其中xxxx是任何年份。
然后(更正):
下表列出了' 2007-04-21'的周和工作日datepart的返回值。对于每个SET DATEFIRST参数。 1月1日是2007年的星期六。4月21日是2007年的星期六。星期日,SET DATEFIRST 7是美国英语的默认值。
所以你有这样的文件:
{ "date" : ISODate("2007-01-01T00:00:00Z") }
{ "date" : ISODate("2006-12-31T00:00:00Z") }
{ "date" : ISODate("2006-01-01T00:00:00Z") }
$week
运算符将返回如下:
{ "date" : ISODate("2007-01-01T00:00:00Z"), "week" : 0 }
{ "date" : ISODate("2006-12-31T00:00:00Z"), "week": 53 }
{ "date" : ISODate("2006-01-01T00:00:00Z"), "week" : 1 }
2006年1月1日是星期日,被认为是第1周的开始,但是星期六它将是2007年的第0周。去年12月31日是第53周。
相比之下,DATEPART将2007年1月1日和2006年12月31日视为第1周,作为今年第一个星期日结束的一周。星期日是默认的美国英语值,但可能不同,实际上可以通过SET DATEFIRST
设置因此,对于一年中某周的日期,两者都有不同的意见,但一般差异将是一个,而其他考虑天数则在去年年底。