前几天网上盛传:
————————————————————————————————
2010年的10月份是个不寻常的月份,这个月份中有5个星期五,5个星期六,5个星期日,这种情况需要823年后才能再次出现
————————————————————————————————
这很明显是个伪命题,常识来看,一个月如果有三个“星期几”出现了5次,那这个月一定有31天,而且这三个“星期几”一定是连续的,这个很容易可以推断出来:
————————————————————————————————
这很明显是个伪命题,常识来看,一个月如果有三个“星期几”出现了5次,那这个月一定有31天,而且这三个“星期几”一定是连续的,这个很容易可以推断出来:
一周是7天,所以星期几是7天一个轮回,一个月至少有28天,所以对于任意一个“星期几”,一定会出现至少4次。如果这个月的天数多于28天,则1号和29号的“星期几”一定是相同的,2号和30号的相同,3号和31号的相同。一个月不会超过31天,所以这样看下来,对于有31天的月份来说,1、2、3号的“星期几”一定会出现5次,这本身没什么奇怪的…………
要验证也很容易,通过excel、通过编程都可以检验。最简单的就是用windows自带日期和时间了,动动上下按钮,即可看到2021、2004、1999年的10月也是这样的
下面用oracle的sql简单验证一下:
--只需要验证某年的10月1日是星期五就行了
--往后找99年
SCOTT@lw.lw> select 2010+rn from (select rownum rn from dual connect by ro
wnum<100) where to_char(add_months(trunc(sysdate,'mm'), rn*12), 'D')=6;
2010+RN
----------
2021
2027
2032
2038
2049
2055
2060
2066
2077
2083
2088
2094
2100
2106
已选择14行。
已用时间: 00: 00: 00.01
---往前找99年
SCOTT@lw.lw> select 2010-rn from (select rownum rn from dual connect by ro
wnum<100) where to_char(add_months(trunc(sysdate,'mm'), -rn*12), 'D')=6;
2010-RN
----------
2004
1999
1993
1982
1976
1971
1965
1954
1948
1943
1937
1926
1920
1915
已选择14行。
SCOTT@lw.lw> select 2010+rn from (select rownum rn from dual connect by ro
wnum<100) where to_char(add_months(trunc(sysdate,'mm'), rn*12), 'D')=6;
2010+RN
----------
2021
2027
2032
2038
2049
2055
2060
2066
2077
2083
2088
2094
2100
2106
已选择14行。
已用时间: 00: 00: 00.01
---往前找99年
SCOTT@lw.lw> select 2010-rn from (select rownum rn from dual connect by ro
wnum<100) where to_char(add_months(trunc(sysdate,'mm'), -rn*12), 'D')=6;
2010-RN
----------
2004
1999
1993
1982
1976
1971
1965
1954
1948
1943
1937
1926
1920
1915
已选择14行。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29867/viewspace-675883/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29867/viewspace-675883/