MSDE FunClub
Microsoft Data Engine FunClub
MSDE初心者向けメーリングリスト過去ログ[1243]番
 
[TOP]>[MSDE初心者向けメーリングリスト過去ログ(1243番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
SQL の日付抽出ミスについて

Date: Wed, 19 May 2004 19:38:41 +0900
From: "kk" <who@sub.example.jp>


こんにちは、ストアドプロシージャで日付での抽出について
アドバイスお願いしたくメールします。

windowsXP+Access2000+MSDEの環境で、
受注管理システムを作って運用しています。
1日の受注100件ほどを受注テーブルに保存しています。
受注先の締め日が20日、25日、月末などあり、
毎月締め日が過ぎたら締め処理を行い、締め日までの
該当受注データを受注保存テーブルに移動させて集計などしています。

1年ほどは問題なく動いていたのですが、4月20日締めの
締め処理(3/21〜4/20まで)をしたら、4月20日分の受注データだけが
受注保存テーブルに移動されず、受注テーブルに残ってしまいました。
末締めなどの締め処理は正常に終わっていました。

VBAやストアド記述のミスかと思いテストや確認するも、
ミスが発見できず、20日締めも末締めも同じ処理を使っており、
今まで正常だった事もあり悩んでいます。

VBAからストアドプロシージャに締め処理する期間の日付を渡して、
ストアドで締め処理をしています。
ストアドの記述で下記のようにしております。(一部抜粋)

INSERT INTO T受注保存 SELECT * FROM T受注
WHERE T受注.受注日 <= CAST(@ST_締め日 AS datetime) AND
T01受注.締め日 = @ST_締め種類

「@ST_締め日」には今回の例では2004/04/20、
「@ST_締め種類」は20、などと締め日の種別が入ってきます。
このような記述で、20日締め顧客の受注日4月20日の分だけが
漏れるって考えられませんよね・・・?

WHERE T受注.受注日 <= CAST(@ST_締め日 AS datetime) AND
上記の記述を <= でなく、 < にして@ST_締め日に1日加算して
WHERE T受注.受注日 < CAST(@ST_締め日 AS datetime) AND
のようにするべきだったのでしょうか?
ちなみに受注保存テーブルには4万件以上データが入っていますが
受注テーブルは5千件程度です。
20日締めの顧客は2社だけなので締め処理も軽いです。
4月20日分が漏れたのは1回だけで、その後のテストでは
再現できませんでした。漏れたケースも初めてです。

長々と大変すみません、チェックすべき点などアドバイスありましたら
なにとぞ宜しくお願い致します。



[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。