ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Oracle, SQLServer, DB2... etcコミュの時間の比較について

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お世話になります。
SQLServer2005を使っていますが、
時間の比較についてどなたか教えて下さい。


最新の売り上げた商品を表示したいのです。
DBにはvarchar(5)型で時刻が2:30と11:30と言う形でデータが入っています。時間が1桁の時は頭に0は付いていません。
これを、MAX関数を使ってselectすると、2:30が上に来ます。
おそらく、2と1を比較しているからだと思いますが、
convertでintに変換して見たのですが、うまく行きません。

また、max(convert(int,replace(a.受注時刻,':','')))も
使ってみたのですが、使い方が悪いのかこれもまた、ダメでした。

02に変更すると、うまく行くのですが、データベースの内容を書き換える事もできません。


select max(a.受注時刻) ,b.商品NM from T売上表 a
inner join T商品マスタ b
on a.商品CD = b.商品CD
where a.受注日 = 20070109


現状このような形です。


表示したいのは
受注時刻  商品NM
11:30    パン
10:30    紅茶
9:50    ジュース
2:50    パン
であれば問題ないのですが、

受注時刻  商品NM
9:50    ジュース
2:50    パン
11:30    パン
10:30    紅茶
このような形になってしまいます。

どなたか、良い比較の方法がありましたら、ご指示下さい。
よろしくお願いいたします。

コメント(4)

一般的にはCAST関数でCASTすればいいのではないでしょうか?

See.
http://msdn2.microsoft.com/ja-jp/library/ms187928.aspx
ORDER BY right('00000' + a.受注時刻, 5) -- 0フィルする。>1 と同じ
ORDER BY CAST(a.受注時刻 as datetime) -- 時刻型にキャスト

とか。表示に手を加えないで、ORDER BY 句で表示の正規化をします。
BOLが手元に無いので関数の引数などはうろ覚えですが。
みなさんありがとうございました。
抽出する項目に対してキャストすることで無事解決致しました。
昨日の時点では条件式でいろいろあーだこーだやってたのですが、うまく行ってなかったので、こちらで相談させて頂いて
かなり助かりました。

ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Oracle, SQLServer, DB2... etc 更新情報

Oracle, SQLServer, DB2... etcのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング