sql >> データベース >  >> RDS >> Sqlserver

1899-12-30が12/31ではなくAccess/SQL Serverのゼロ日付であるのはなぜですか?

    当時、Lotus 1-2-3との互換性を維持していましたが、1900年はうるう年であると考えられていた(またはふりをした?)というバグがありました。

    説明は長すぎて引用できませんが、好奇心のために、ここにいくつかの抜粋があります。

    • http://blogs.msdn.com/b/ericlippert/archive/2003/09/16/53013.aspx

    • http://www.joelonsoftware.com/items/2006/06/16.html

    1900年はうるう年ではありませんでした。

    「これはExcelのバグです!」叫びました。

    「まあ、そうではない」とエドは言った。 「Lotus123ワークシートをインポートできるようにする必要があるため、そのようにする必要がありました。」

    「それで、Lotus 123のバグですか?」

    「ええ、でもおそらく意図的なものです。ロータスは640Kに収まらなければなりませんでした。それは多くのメモリではありません。1900を無視すると、右端の2ビットかどうかを確認するだけで、特定の年がうるう年かどうかを判断できます。ゼロです。それは本当に速くて簡単です。ロータスの人たちは、過去2か月間は間違いではないと考えていたでしょう。ベーシックの人たちは、この2か月についてアナルになりたかったようです。そこで、彼らはある日の時代。」

    • http://www.cpearson.com/excel/datetime.htm

    実際には、この数は実際の日数より1つ多くなります。これは、Excelが1900年2月29日の日付が存在するかのように動作するためです。それはしませんでした。 1900年はうるう年ではありませんでした(2000年はうるう年です)。 Excelでは、1900-Feb-28の翌日は1900-Feb-29です。実際には、1900年2月28日の翌日は1900年3月1日でした。これは「バグ」ではありません。確かに、それは仕様によるものです。 ExcelはLotus123のバグであったため、このように機能します。Excelが導入されたとき、123にはスプレッドシートソフトウェアのほぼすべての市場がありました。 Microsoftは、完全な互換性を保つために、Lotusのバグを継続することを決定しました。 123からExcelに切り替えたユーザーは、データに変更を加える必要はありません。すべての日付が1900年3月1日以降である限り、これは問題になりません。



    1. テーブルのセットでCDCを無効にする方法、またはSQLServerのデータベース内のすべてのテーブルで無効にする方法-SQLServerチュートリアル

    2. MariaDBで時間、分、秒を時間値から分離する4つの方法

    3. 文字列を連結/集約するための最適な方法

    4. pgadmin4:postgresqlアプリケーションサーバーに接続できませんでした。