MySQL での正確な月の差の計算
MySQL には、2 つの日付の間の月数を計算するために不可欠な関数 TIMESTAMPDIFF() が用意されています。これにより、さまざまな月の長さやうるう年に伴う複雑な問題が排除されます。
SELECT TIMESTAMPDIFF(MONTH, '2012-03-08', '2012-08-01'); -- Outputs: 4
精度の向上
精度を高めるために、より複雑なアプローチを使用できます。
SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH )
この数式は、(月の差後の) 残りの日数を小数として計算することで精度を高めます。 month.
例
WITH startdate AS '2012-03-08', enddate AS '2012-04-15' SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ); -- Outputs: 1.2333
この結果は、2 つの日付の間に 1 か月と 1 か月の約 23.33% の差があることを示しています。
以上がMySQL で正確な月の違いを計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。