- - PR -
「今日」だけ表示ができない
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-03 19:31
「一旦別の日」「今日の日付」の条件判断を行っている部分のコードを見せて下さい。 _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2006-10-03 19:33
[ メッセージ編集済み 編集者: 未記入 編集日時 2007-01-19 21:42 ] | ||||||||||||
|
投稿日時: 2006-10-03 21:56
同じソースで、入力だけを変えた、ってことじゃないかな???
過去の投稿より、「しなきゃいけないんじゃないの?!」じゃないかなぁ??? 周りに聞こうにも、だれもソフトウェアやっている人はいない、って人じゃなかったっけ? データがあるのかどうか。それが気になりますね。 また、日付として比較するべきじゃないかな、と。 Oracle では TO_DATE 関数なのですが、SQL Server だとなんになるのかな?(と、SQL Server 使いにふる) または、パラメータを使って、DATE として比較するのが良いんじゃないかと(ってか、セキュリティ上、文字列連結はやめましょう)。 _________________ | ||||||||||||
|
投稿日時: 2006-10-03 22:12
このようなコードがあるので、「今日」というのを特別に扱っているのかな、と思いまして。
CONVERT(datetime, [日付], 111) こんなのです(曖昧)。第3引数は、日付の形式(111は日本だったと思う)。詳しくは以下。 http://msdn2.microsoft.com/ja-JP/library/ms187928.aspx _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2006-10-04 00:14
NAL-6295です。
SQLプロファイラで実際に実行されているSQLを確認してみてはいかがでしょうか。 | ||||||||||||
|
投稿日時: 2006-10-04 09:37
みなさん、ご回答ありがとうございます。
返答遅れまして申し訳ありません。 ★分や秒を比較する理由は、単純にDB上に時間も格納されているためです。本当は日付だけをDBに入れたかったのですが、日付だけを保存する方法がvarcharとかしかなく、DateTime型にすると強制的に時間も格納しておかないといけないらしく、やむなくDateTime型にしてこういう方法を取りました。 ★仕組みとして、最初の起動時に「今日のデータ」を表示させて、そこから特定の日時を検索するようになっています。下記の「コメントアウトした」というのは、この起動時の最初の関数を動かないようにした、ということです。 機能のひとつとして今日の日付を表示するためのボタンを用意しており、そのボタンを押したときに「今日のデータ」を表示するようにしたいのです。2回目の「今日」の表示はこのボタンを押したときのことを言っています。 やっていることは起動時も「今日に戻る」ボタン押下時も、カレンダーをクリックしたときも、 datToday = new DateTime(); datToday = DateTime.Now; で今の日付と時間をdatTodayに入れて、それを getDB(datToday); としてデータベースからその日付のデータを引っ張り出してくる関数に渡しているだけです。 別の日付をテキストボックスから入力したり、カレンダーから入力したりしても、また前述のとおり、起動時に「今日」の日付を入力しても、この関数は正しく動いているので、ブラックボックスと見ればこの関数に罪はなさそうなのですが……。 >Jittaさん その通りです、私の周りにプログラマはいないんです。ちょっと離れた場所にVBA触れる人ならいるのですが、それくらいで……。SQLサーバも業者に任せて設置したみたいです。 あとセキュリティ的に文字連結がよくないとのことですが、今の予定ではこれはDMZの中だけで使うことになるのと、それ以前に私のレベルがセキュリティ考えられるまであがっていないので、ひとまず置いておくことにします(T-T >NAL-6295さん SQLプロファイラというのは初めて聞きました。ストアドプロージャーも使えないほどの知識ですので……orz 勉強します。 [ メッセージ編集済み 編集者: Wingard 編集日時 2006-10-04 10:23 ] | ||||||||||||
|
投稿日時: 2006-10-04 10:29
余談ですが・・・
内緒ですが、実は僕もそうです(T-T) #ああ、道理で・・・って声が聞こえた・・・気がする orz _________________ R・田中一郎 @ わんくま同盟 - R.Tanaka.Ichiro’s Blog ←ページビュー掲載しますた [ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-10-04 10:30 ] | ||||||||||||
|
投稿日時: 2006-10-04 11:11
こんにちは。
最初に書いたときに Dispose の部分の話を書きましたが、なんとなくタイミング 的な問題なのではないかと思っています。「今日に戻る」ボタンで正常に動くとい うことは、起動時に正しく取れたデータを上書きしているか、もしくは取るタイミン グが間違っているか、どちらかのように思えます。 というか前に書いたときにに書き損ねました。ごめんなさい。 # コードの方にばかり目が行ってしまっていたというのもありますけど… それはそれとして、コードの話。
もうデータがあるようなので、今から云々言っても仕方がない部分ではあります が、必要な部分は月日だけのようでしたので私であれば varchar(4) として "0229" のような形で格納するか、int 型にすると思います。検索条件日付の 妥当チェックを行う必要はあるかもしれませんが、それは今でも同じですね。 日付のチェックは他の方も言っておられるように
だと Date 型のデータを文字列として比較することになっていて、日付フィール ドが SQL Server 標準のフォーマットで文字列に変換された後で MemTemp が(これも .NET の標準フォーマットで)日付に変換された文字列 と比較されます。 これではマズいので、明示的に CONVERT 関数(SQL Server 側)と DateTime.ToString("フォーマット文字列") (.NET 側)という感じで文字列に 変換した上で比較するのが安全かなぁと思いました。 というかこれもキチンと書いてませんでした。ごめんなさい。 # こういうのを見るたびに、Access で作ったシステムが突然動かなくなったの # で、調べてみたら国情報をドイツに変えられていた(なんで?)ことを思い出す。 # 自分が作ったシステムではなかったけれど…
むぐっ!(何かを言い出す前に口をふさいだ音) そっ、そんな餌になんか釣られないんだからねっ!(ツンデレ) _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 |