
Oracle XEとC#4とでは、0001/1/1からの日数に少し差があるみたいなんです。何ででしょうか?
Oracle
> select '0101' n, date '0101-01-01' - date '0001-01-01' m from dual
> union all select '0201' n, date '0201-01-01' - date '0001-01-01' m from dual
> ~
> union all select '2001' n, date '2001-01-01' - date '0001-01-01' m from dual
> union all select '2010' n, date '2010-01-01' - date '0001-01-01' m from dual
C#
> static void Main(string[] args) {
> DateTime z = new DateTime(0, DateTimeKind.Utc);
> foreach (int i in new int[] { 101, 201, 301, 401, 501, 601, 701, 801, 901, 1001,
> 1101, 1201, 1301, 1401, 1501, 1601, 1701, 1801, 1901, 1970, 2001, 2010, }) {
> TimeSpan s = new DateTime(i, 01, 01, 0, 0, 0, DateTimeKind.Utc) - z;
> Console.WriteLine("{0:0000}{1, 10}", i, s.TotalDays);
> }
> Console.ReadLine();
> }
| | C# | Oracle | 差 |
| 0101/01/01 | 36,524 | 36,525 | -1 |
| 0201/01/01 | 73,048 | 73,050 | -2 |
| 0301/01/01 | 109,572 | 109,575 | -3 |
| 0401/01/01 | 146,097 | 146,100 | -3 |
| 0501/01/01 | 182,621 | 182,625 | -4 |
| 0601/01/01 | 219,145 | 219,150 | -5 |
| 0701/01/01 | 255,669 | 255,675 | -6 |
| 0801/01/01 | 292,194 | 292,200 | -6 |
| 0901/01/01 | 328,718 | 328,725 | -7 |
| 1001/01/01 | 365,242 | 365,250 | -8 |
| 1101/01/01 | 401,766 | 401,775 | -9 |
| 1201/01/01 | 438,291 | 438,300 | -9 |
| 1301/01/01 | 474,815 | 474,825 | -10 |
| 1401/01/01 | 511,339 | 511,350 | -11 |
| 1501/01/01 | 547,863 | 547,875 | -12 |
| 1601/01/01 | 584,388 | 584,390 | -2 |
| 1701/01/01 | 620,912 | 620,914 | -2 |
| 1801/01/01 | 657,436 | 657,438 | -2 |
| 1901/01/01 | 693,960 | 693,962 | -2 |
| 1970/01/01 | 719,162 | 719,164 | -2 |
| 2001/01/01 | 730,485 | 730,487 | -2 |
| 2010/01/01 | 733,772 | 733,774 | -2 |
もしかして、どこか間違ってますか?
No.1ベストアンサー
- 回答日時:
多分、グレゴリオ暦の扱いが違うんだと思います。
・Ruby
require 'date'
hoge = Date.new(2010,12,1)
piyo = Date.new(1,1,1.)
puts (hoge-piyo).to_i
→ 734108
hoge = Date.new(2010,12,1)
piyo = hoge = Date.new(1582,10,15) #グレゴリオ暦開始日
puts (hoge-piyo).to_i
→156371
・Python
import datetime
hoge = datetime.datetime(2010,12,1)
piyo = datetime.datetime(1,1,1)
print hoge - piyo
→734106
hoge = datetime.datetime(2010,12,1)
piyo = datetime.datetime(1582,10,15)
print hoge - piyo
→156371
・Oracle
select to_date('2010-12-01','yy-mm-dd') - to_date('0001-01-01','yyyy-mm-dd') from dual
→734108
select to_date('2010-12-01','yy-mm-dd') - to_date('1582-10-15','yyyy-mm-dd') from dual
→156371
結局、全部調べてみました。
----------- 1582/10/14
----------- 1582/10/13
----------- 1582/10/12
----------- 1582/10/11
----------- 1582/10/10
----------- 1582/10/09
----------- 1582/10/08
----------- 1582/10/07
----------- 1582/10/06
----------- 1582/10/05
1500-02-29 -----------
1400-02-29 -----------
1300-02-29 -----------
1100-02-29 -----------
1000-02-29 -----------
0900-02-29 -----------
0700-02-29 -----------
0600-02-29 -----------
0500-02-29 -----------
0300-02-29 -----------
0200-02-29 -----------
0100-02-29 -----------
Oracleの方が閏年が12日多いです。
C#には1582/10/05~1582/10/14の10日間が存在します。
この辺り↓を読んだ感じだと、どちらも間違っているわけではないのでした。
http://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AC% …
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) マクロについて教えてください。 1 2023/06/06 00:57
- JavaScript gasについて 1 2022/05/31 21:51
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Visual Basic(VBA) swiftで年号を 1 2023/02/05 06:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型カラムへのデータINSERT
-
Datetime型とDate型
-
Access 日付けについての関数
-
SQL*Loader フォーマット変換...
-
ALTER SESSIONについて
-
SQL*PLUSでの分秒までの表示の仕方
-
Accessのマクロでモジュールを...
-
今日の日付が入った行のデータ...
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
Excel VBAで「プログラム実行」...
-
ODBCリンクの際にACCESSでは読...
-
PL/SQLカーソルの2重FORループ...
-
ACCESS マクロをモジュールに変...
-
Accessでグローバル変数を宣言...
-
ストアド実行時のエラー「参照...
-
百の位での四捨五入について
-
PL/SQLでのSQL文法
-
SQL*Plusの終了はquit?exit?
-
SQL文のエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型カラムへのデータINSERT
-
SQL*Loaderでのsysdate使用
-
SQL*Loader フォーマット変換...
-
SQL*PLUSでの分秒までの表示の仕方
-
DB2でのシステム日付のinsert、...
-
ALTER SESSIONについて
-
SQL Server で 翌月10日を取...
-
(日付 - 日付)/数値
-
SQL Sever での日付の差の求め...
-
to_date使用時に発生するエラー...
-
SQLエラーについて
-
date '0001-01-01'からの日数
-
date型へのinsertについて
-
日付の範囲検索がしたい
-
EXCELでの時間計算(休憩時間の...
-
PL/SQL パッケージでのプロンプ...
-
エクセル上の 2017/10/27 7:01...
-
「年月」のみの文字列フィール...
-
date型のインデックス
-
エクセルで「2016/5/12」を「20...
おすすめ情報