1970年1月1日は、紀元後何日目?
2006年4月13日
MySQL で使える関数の一つに、次の物がある。
指定された日数
この関数と、Unix timestamp の関連はどうなっているかというと、
SELECT FROM_DAYS(719528);
というクエリーが
1970-01-01
を返す。このことから、表題の質問の答えは、719528 日目ということになる。
いいのかな?この結論で。一応検算しておこう。一年365日で、閏年では366日。100年に一度閏年が無くなるが、これは確か400年に一度キャンセルされる。したがって、紀元後1年から紀元後399年12月31日までは、閏年が 24*4+1=97 回。閏年で無い年が、400-97=303回。従って、この400年が何日に相当するかというと、
97*366+303*365=146097 (日)
だから、紀元後1年から、紀元後1599年12月31日までは、
146097*4=584388(日)
紀元後1600年から1899年12月31日までは、
(24*366+76*365)*3=109572(日)
1900年から1969年12月31日までは、閏年が17回有るので、
17*366+53*365=25567(日)
従って、紀元後1年1月1日から、1969年12月31日までは、
584388+109572+25567=719527(日)
で、次の日1970年1月1日は719528日目である。
FROM_DAYS(N)
指定された日数
N
に対して DATE
型の値を返す。この関数と、Unix timestamp の関連はどうなっているかというと、
SELECT FROM_DAYS(719528);
というクエリーが
1970-01-01
を返す。このことから、表題の質問の答えは、719528 日目ということになる。
いいのかな?この結論で。一応検算しておこう。一年365日で、閏年では366日。100年に一度閏年が無くなるが、これは確か400年に一度キャンセルされる。したがって、紀元後1年から紀元後399年12月31日までは、閏年が 24*4+1=97 回。閏年で無い年が、400-97=303回。従って、この400年が何日に相当するかというと、
97*366+303*365=146097 (日)
だから、紀元後1年から、紀元後1599年12月31日までは、
146097*4=584388(日)
紀元後1600年から1899年12月31日までは、
(24*366+76*365)*3=109572(日)
1900年から1969年12月31日までは、閏年が17回有るので、
17*366+53*365=25567(日)
従って、紀元後1年1月1日から、1969年12月31日までは、
584388+109572+25567=719527(日)
で、次の日1970年1月1日は719528日目である。