
PL/SQLを用いて、勤務時間の計算を行うプログラムを作成中です。(DBがoracle11g)
単純に退勤時刻から出勤時刻を引いて求めたいのですが、
実行時にエラーとなってしまいうまくいきません。
(当方勉強始めたばかりで、エラーが出ても何がだめなのか分かっていない状況です。)
以下に実際コーディング中のソースを載せますので、どなたか教えていただけませんでしょうか?
よろしくお願い致します。
↓以下ソースです。(end_date、start_dateがパラメータでそれぞれchar(04)で定義しています。)
---------------------------------------------------
--*変数定義
wk_time char(04) := '0000';
wk_time_h char(02) := '00';
wk_time_m char(02) := '00';
sys_date char(08) := '00000000';
BEGIN
wk_time := to_date(end_date,'hh24mi') - to_date(start_date,'hh24mi');
wk_time_h := substr(wk_time,1,2);
wk_time_m := substr(wk_time,3,2);
if substr(wk_time,3,2) >= '30' then
wk_time_m := '30';
else
wk_time_m := '00';
end if;
----------------------------------------------------------
実行すると、
ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。が発生しました
と表示されました。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちわ。
> 実行時にエラーとなってしまいうまくいきません。
DATE 型は内部で7Byte の数値型データです。
※ 小数点から上で日からの経過日数, 小数点以下は
本日00:00 からの経過秒です。
なので、date1 + 7 (翌週) やdate1 - 1/12 (2時間前) といった
演算ができます。
なので、DATE 型データ同士の減算を行うと結果は数値 (Number型)
となります。
No.2
- 回答日時:
>hh24miにしているので、例えば9時なら
>0900になると思っているので、char(04)にしました。
"to_date(end_date,'hh24mi')"というのは
end_dateの文字列は"hh24mi"(時2桁分2桁の24時間表記)として、
それをdate型に変換するという意味です。
date型なので当然char(04)型ではありません。
SQL文を実行してみるなど確認方法はあるでしょうに・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- Oracle SQLの書き方について 1 2023/04/13 09:54
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- 飛行機・空港 PACIFIC AIRLINESのハノイ発関空着はありますか 2 2022/04/25 20:15
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型カラムへのデータINSERT
-
SQL*Loader フォーマット変換...
-
SQL Sever での日付の差の求め...
-
Access 日付けについての関数
-
ALTER SESSIONについて
-
to_date使用時に発生するエラー...
-
SQL*PLUSでの分秒までの表示の仕方
-
Accessのマクロでモジュールを...
-
今日の日付が入った行のデータ...
-
Excel VBAで「プログラム実行」...
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
ODBCリンクの際にACCESSでは読...
-
キャッシュを使わずにSELECTを...
-
SQL文のエラー
-
PL/SQLカーソルの2重FORループ...
-
SQLserver算術オーバーフロ...
-
Accessの数値から時間に変換す...
-
ACCESS マクロをモジュールに変...
-
ストアド実行時のエラー「参照...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型カラムへのデータINSERT
-
SQL*Loaderでのsysdate使用
-
SQL*Loader フォーマット変換...
-
SQL*PLUSでの分秒までの表示の仕方
-
DB2でのシステム日付のinsert、...
-
ALTER SESSIONについて
-
SQL Server で 翌月10日を取...
-
(日付 - 日付)/数値
-
SQL Sever での日付の差の求め...
-
SQLエラーについて
-
to_date使用時に発生するエラー...
-
date '0001-01-01'からの日数
-
date型へのinsertについて
-
EXCELでの時間計算(休憩時間の...
-
日付の範囲検索がしたい
-
date型のインデックス
-
PL/SQL パッケージでのプロンプ...
-
エクセルで「2016/5/12」を「20...
-
PL/SQLにて勤務時間の計算
-
日付範囲を展開したレコードを...
おすすめ情報