No.3ベストアンサー
- 回答日時:
こんにちわ。
#1 のmuyoshid です。
> arrには"to_date('2002/12/26 12:30:30', 'YYYY/MM/DD HH24:MI:SS') "を
> 格納するのでしょうか?
> その際のlenは何を設定すればよいのでしょうか?
ホスト変数のarr に、"2002/12/16 12:30:30" が指定されていれば、
len には、arr の文字列長を指定します。
実際には確認していませんが、Pro*C でのプログラムはこんな感じです。
EXEC SQL INCLUDE SQLCA;
main()
{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR2 vDate[32];
VARCHAR2 vLogin[32];
EXEC SQL END DECLARE SECTION;
strcpy(vLogin.arr, "scott/tiger");
vLogin.len = strlen(vLogin.arr);
EXEC SQL CONNECT :vLogin;
if (sqlca.sqlcode < 0) {
printf("Connection Error.\n");
exit(1);
}
strcpy(vDate.arr, "2002/12/26 12:30:30");
vDate.len = strlen(vDate.arr);
EXEC SQL Update test
set tmpdate = to_date(:vDate, 'YYYY/MM/DD HH24:MI:SS')
where id = '0000';
if (sqlca.sqlcode < 0) {
printf("Update Error.\n");
exit(1);
}
EXEC SQL COMMIT WORK;
if (sqlca.sqlcode < 0) {
printf("Commit Error.\n");
exit(1);
}
exit(0);
}
でも実際にプログラムする時には、ホスト変数の設定は
マクロでやってしまう事が多いです。
#define VSET(_h,_s) srtcpy(_h.arr, _s); _h.len = strlen(_s)
としておけば、
VSET(vLogin, "scott/tiger");
だけで済んじゃいます。
No.2
- 回答日時:
こんにちわ。
#1 のmuyoshid です。
> update table set tmpdate = '2002/12/26 12:30:30'
> where id='0000'
と言う事であれば、解決策としては
1) to_date で変換する。
2) 事前にAlter session で日付書式を変更する。
3) デフォルトの日付書式を変更する。
の何れかになります。
1) の場合、
update table set
tmpdate = to_date('2002/12/26 12:30:30', 'YYYY/MM/DD HH24:MI:SS')
where id='0000'
2) の場合、
Alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS'
を実行
3) の場合、
Windows 環境であれば、
\\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\
に、NLS_DATE_FORMAT と言うキーを作成してキーの値に
YYYY/MM/DD HH24:MI:SS を指定
Unix/Linux 環境の場合、
環境変数 NLS_DATE_FORMAT に'YYYY/MM/DD HH24:MI:SS' を指定
になると思います。
(Windows のレジストリの場所についてはちょっと自信が無いけど)
すみません。実際はunix-cにてプログラミングしており、ホスト変数に値を格納しています。
その際、arrには"to_date('2002/12/26 12:30:30', 'YYYY/MM/DD HH24:MI:SS') "を格納するのでしょうか?
その際のlenは何を設定すればよいのでしょうか?
No.1
- 回答日時:
こんにちわ。
現在日時と言う事であれば、SYSDATE が使えます。
SQL*Plus 等で、DATE 型データを取り出した場合、時間情報
がマスクされていますので、事前に
SQL> Alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS';
とされておくと良いと思います。
> YYYY/MM/DD hh:mm:ss'の情報を格納するにはどうすれば
> よいのでしょうか?
> TO_DATEを使用するのでしょうか?
時間のフォーマットは、'HH24:MI:SS' が良いです。
hh -> 12時間制です。
mm -> 月です。
文字列として、変数に格納されている値をInsert する場合
デフォルト書式と一致していれば、to_date で変換する必要は
ありませんが、デフォルト書式に依存しないようにするため、
to_date した方が良いと思います。
文字列としてホスト変数に格納したいのですが、
以下のようにテストするとエラーとなってしまいます。
update table set tmpdate = '2002/12/26 12:30:30' where id='0000'
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript gasについて 1 2022/05/31 21:51
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- 英語 to date 2 2023/05/23 23:22
- PHP php エラー 2 2022/10/23 16:43
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
- Access(アクセス) エクセルのVBAについて教えてください。 4 2023/01/21 10:21
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Access(アクセス) Accessのデータ型の日付/時刻型について 1 2023/04/02 17:03
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL*Loaderでのsysdate使用
-
SQL*PLUSでの分秒までの表示の仕方
-
エクセル上の 2017/10/27 7:01...
-
DB2でのシステム日付のinsert、...
-
DB2のTimestamp型
-
date型へのinsertについて
-
SQLです。下記の問合せを行うク...
-
oracleのDate型
-
SQL*Loader フォーマット変換...
-
「文字が無効です」になる
-
yyy/mm/dd/形式
-
to_date使用時に発生するエラー...
-
SQL Sever での日付の差の求め...
-
日付型カラムへのデータINSERT
-
PL/SQLにて勤務時間の計算
-
Accessのマクロでモジュールを...
-
エクセルVBAでUserFormを起動し...
-
Statement ignored というエラー
-
ACCESS2007インポート時の空白...
-
日付の切り出し方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL*Loaderでのsysdate使用
-
SQL*PLUSでの分秒までの表示の仕方
-
SQL*Loader フォーマット変換...
-
DB2でのシステム日付のinsert、...
-
日付型カラムへのデータINSERT
-
ALTER SESSIONについて
-
エクセル上の 2017/10/27 7:01...
-
SQLです。下記の問合せを行うク...
-
to_date使用時に発生するエラー...
-
SQL Server で 翌月10日を取...
-
EXCELでの時間計算(休憩時間の...
-
SQL Sever での日付の差の求め...
-
(日付 - 日付)/数値
-
SQLエラーについて
-
日付範囲を展開したレコードを...
-
date型のインデックス
-
PL/SQLにて勤務時間の計算
-
DB2のTimestamp型
-
基本的なことですが;
-
実行エラー 3075:クエリ式`作...
おすすめ情報