[pgsql-jp: 25300] Re: date型に31 年2月の日付が入らない?

Shindo@AtSystem shindo @ atsystem.jp
2002年 3月 15日 (金) 09:22:11 JST


進藤です。お世話になっております。

--- Cyoki Cyoki --- Cyoki Cyoki ---
>A.1.2. は眺めていたのですが、31 02 01 という3つのトークンに分割され
>最初の"31"を評価するときに
>> 3. トークンが数値あるいは、数値フィールドの場合 
>>   c.もしそれが2桁以上の場合、年と解釈されます。 
>の条件に当てはまるため、31年02月01日と解釈されると思っていました。
>
--- Cyoki Cyoki --- Cyoki Cyoki ---

マニュアルには、以下の記述があります。
和暦(昭和、平成など)としての解釈は存在しませんから、
/で区切られた3組の数字を、最初の数字が12より大きいので
US形式だと見なして、以降の判定をしているのではないでしょうか。
-で区切られていれば、年-月-日のISO形式としてご希望のような
判定になるのではないでしょうか。

>3.4.1.1. 日付
>date 型では下記の入力が可能です。 
>
>Table 3-7. 日付入力
>
>例                  説明 
>January 8, 1999     変更不可 
>1999-01-08          ISO-8601のフォーマット。推奨。 
>1/8/1999 US形式。   ヨーロッパモードでは8月1日と認識されます。 
>8/1/1999            ヨーロッパ形式。USモードでは8月1日と認識されます。 
>1/18/1999 米国形式。このケースではどのモードでも1月18日と認識されます。 
>19990108            ISO-8601の年、月、日付 
>990108              ISO-8601の年、月、日付 
>1999.008            年とその日までの累計 
>99008               年とその日までの累計 
>January 8, 99 BC    西暦紀元の99年前 
>
>A.1.2
>  1.a.もしトークンがダッシュ("-")や、スラッシュ("/")、あるいはドット(".")を 含
んで>いた場合、それは月名を含んでいる日付文字列です。 
>  3.d.もしヨーロッパ式の日付モード、"日"フィールドがまだ読みこまれていない、 
その値>が 31以下という全ての条件が 当てはまる場合、それは"日"と解釈され
ます。 
>  3.e.もし非ヨーロッパ式(US式)の日付モードの場合で、さらに"月"のフィールドが 
まだ読>みこまれていなく、 そしてその値が 12以下という全ての条件が 当ては
まる場合、それは">月"と解釈されます。 
>  3.f.もし"日"フィールドが読みこまれておらず、さらにその値が 31以下の場合は、 
"日">と解釈されます。 
>

--- Cyoki Cyoki --- Cyoki Cyoki ---
>もしかして、3つのトークンに分割されるというのが間違いで、
>1.b の
>> もしトークンがダッシュ("-")や、スラッシュ("/")、あるいはドット(".")を
>> 含んでいた場合、それは月名を含んでいる日付文字列です。 
>で解釈は終了し、INSERT時に DETESTYLE が US なので DD/MM/YY という日付
>が入らないのでエラーとなる、ということなのでしょうか?
>
>これならすっきりです。
--- Cyoki Cyoki --- Cyoki Cyoki ---

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  進藤寿則@アットシステム
  shindo @ atsystem.jp
  shindo @ sasoh.ne.jp
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/



pgsql-jp メーリングリストの案内