小小問題,大大深奧
一個簡單的加一個月,竟然可以引起這麼大的問題,為什麼二月底加一個月,卻不是三月底,而是3/29,這樣是少加了幾天呢?還是只是認知問題?
總有人反映,這樣就不是加1個月了阿!但是月份+1、還是天數+30,這又是不同的認知了。
下面讓我們繼續探討下去~
假設
開始日期:2020/02/29 分別用不同語言or語法,相加1個月各得到結論。
- C#:2020/02/29 + 1個月 = 2020/03/29
- SQLite:2020/02/29 + 1個月 = 2020/03/29
- SQLServer:2020/02/29 + 1個月 = 2020/03/29
- Oracle:2020/02/29 + 1個月 = 2020/03/31
上述列有的加到月底,有個加一個月的同一天,是認知問題還是?
C
DateTime date = new DateTime(2020, 2, 29);
Console.WriteLine(date);
Console.WriteLine(date.AddMonths(3).ToString("d"));
SQLite
select date('2020-02-29'),date('2020-02-29','+1 month')
SQLServer
select '2020-02-29',DATEADD(m,1,'2020-02-29')
Oracle
select add_months(to_date('20200229', 'yyyymmdd'),1) from dual;
還有各種不同的語言,也歡迎各位在下方回覆討論。
Orignal From: 不同語言,對於addMonths 認知差異,以閏年閏月為例
留言
張貼留言