跳到主要內容

文章

不同語言,對於addMonths 認知差異,以閏年閏月為例

小小問題,大大深奧

一個簡單的加一個月,竟然可以引起這麼大的問題,為什麼二月底加一個月,卻不是三月底,而是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 認知差異,以閏年閏月為例

最近的文章

[C#]TQC+ 物件導向程式語言認證指南 C#

[TOC]
操作題檔案下載
操作題程式碼下載
第一類
101. 文字輸入與文數字轉換



102. for 迴圈與平均值計算


103. 成績分組


104. 計算折扣


105. 蒐尋短字串


106. 付款方式


107. 質數


108. 最大公因數


109. 迴圈運算


110. 函數多載



第二類
2-201 數列排序



2-202 成績計算


2-203 文化語言資訊


2-204 賓果遊戲



2-205 壓所與解壓縮檔案


2-206 加解密


2-207 轉檔程式


2-208 圖檔分割


2-209 圖檔讀取


2-210 檔案同步



第三類
3-301 物件比較



3-302 成績查詢


3-303 計算成本


3-304 本利和



3-305 本利和(使用繼承)




3-306 樂透號碼(使用繼承)


3-307 樂透號碼(介面實作




3-308 產品庫存


3-309 產品數量計算


3-310 物件生命週期



第四類
4-401 平均成績



4-402 綜合所得稅

CLASS TAX:ITAX

TaxCalculator.cs

Program.cs

4-403 泡沫排序法

BubbleSort.cs

4-404 二元數


4-405 一元二次方程式


4-406 費式數列


4-407 撲克牌洗牌


4-408 信用卡檢查


4-409 物件機制


4-410 快速排序法



Orignal From: [C#]TQC+ 物件導向程式語言認證指南 C#