Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL データ型 » データ型変換

 

あいまいな文字列から日付への変換

SQL Anywhere では、期待値が日付の値であれば、年が文字列内で 2 桁だけで表されている場合でも、文字列を日付に自動的に変換します。

年の値の世紀を表す部分が省略されている場合は、nearest_century データベース・オプションによって変換方法が決まります。

nearest_century データベース・オプションは、日付値 19YY と日付値 20YY の間を区切る数値です。

nearest_century 値よりも小さい 2 桁の年は 20yy に変換され、nearest_century 値以上の年は 19yy に変換されます。

このオプションを設定しないと、デフォルト設定の 50 が使用されます。そのため、2 桁の年の文字列は 1950 ~ 2049 として認識されます。

この nearest_century オプションは、SQL Anywhere バージョン 5.5 から導入されました。バージョン 5.5 では、デフォルト設定は 0 でした。

あいまいな日付の変換例

次の文は、SQL Anywhere でのあいまいな日付情報の変換を表すのに使用されるテーブルを作成します。

CREATE TABLE T1 (C1 DATE);

table T1 は、DATE 型の 1 カラム C1 を含みます。

次の文は、カラム C1 に日付の値を挿入します。SQL Anywhere ではあいまいな年の値を含む文字列は、年だけを表して世紀を表さない 2 桁の値に自動的に変換されます。

INSERT INTO T1 VALUES('00-01-01');

デフォルトでは、nearest_century オプションは 50 に設定されているので、SQL Anywhere では、上記の文字列を 2000-01-01 という日付に変換します。次の文は、この挿入の結果を確認します。

SELECT * FROM T1;

次の文を使用して nearest_century オプションを変更すると、変換処理が変更されます。

SET OPTION nearest_century = 0;

nearest_century オプションが 0 に設定されている場合、同じ文を使用して直前の挿入を実行すると、異なる日付の値が作成されます。

INSERT INTO T1 VALUES('00-01-01');

上の文を実行すると、1900-01-01 という日付が挿入されます。次の文を使用して結果を確認します。

SELECT * FROM T1;