• ベストアンサー
  • 困ってます

SQL CASE 文について

  • 質問No.3119325
  • 閲覧数2374
  • ありがとう数1
  • 気になる数1
  • 回答数5
  • コメント数0

お礼率 0% (0/5)

開発環境 SQLSERVER VB2005

SQLのCASE文についての質問ですが、DATE型のデータが有効値の場合は”スペース”それ以外の場合は格納されているDATE型を表示したいのですが、どなたかご教授お願いいたします。下記のSQLでは全ての日付が出てしまいます。

SELECT CASE 日付 WHEN '2000/01/01' THEN ' '
    ELSE 日付     
    END AS Expr1
FROM  テーブル

CASE文以外でもできますか?
よろしくお願いいたします。

質問者が選んだベストアンサー

  • 回答No.5
  • ベストアンサー

ベストアンサー率 53% (33/62)

#2、#4です。

#4を回答していて気づいたのですが、もしかして有効値でない日付にNULLではなく「1900-01-01 00:00:00」のデータが設定されていませんか?
一度データの中身を確認された方がよいかと思われます。
補足コメント
VB6-VB2005

お礼率 0% (0/5)

tkrnさん丁寧な回答大変助かります。

DateTimePickerからバインドでデータを持ってきていますので、登録時に「1900-01-01 00:00:00」のデータが入ってきています。
DB型がDATETIME型ですので、NULLを登録していない為です。

1900-01-01 00:00:00 の場合はデータグリッド上で表示しないように「スペース」にしたいということです。有効値は実際の日付が登録されています。説明不足でした。すみません。

DBにNULLで設定する方法など設計段階からでも結構ですのでアドバイス頂けると助かります。
よろしくお願いします。
投稿日時:2007/06/29 08:40

その他の回答 (全4件)

  • 回答No.4

ベストアンサー率 53% (33/62)

どこで日付が表示されていますか?
Management Studio?それとも操作しているアプリケーション側でしょうか?

受け取り側がString型でなくDateTime型になっていませんか?

スペースを逆にDATETIME型にCASTすると「1900/01/01 00:00:00 000」と表示されますので、それに関係ないですか?

SELECT CAST(' ' AS DATETIME) FROM テーブル

結果
1900-01-01 00:00:00 000
  • 回答No.3

ベストアンサー率 62% (162/260)

失礼致しました。

多分、これでしょうね。
SELECT CASE ISDATE(利用日付) WHEN 1 THEN ' '
ELSE CONVERT(varchar(20),利用日付, 111) END AS Expr1
FROM テーブル
  • 回答No.2

ベストアンサー率 53% (33/62)

CASE文を使わない方法でしたら

SELECT ISNULL(CONVERT(VARCHAR,日付,111),' ') AS Expr1
FROM テーブル

でどうでしょうか?
補足コメント
VB6-VB2005

お礼率 0% (0/5)

お答えいただいた回答、2つともなぜかスペースが表示されず、日付が表示されてしまったので、下記で試してみたらできました。ありがとう御座いました。

SELECT CASE 利用日付 WHEN '1900-01-01 00:00:00' THEN ' '
ELSE CONVERT(varchar(20),日付, 100) END AS Expr1
FROM テーブル

なにか使い方が間違っている気がしますが・・・
投稿日時:2007/06/27 12:59
  • 回答No.1

ベストアンサー率 62% (162/260)

お早うございます。

こんな感じかな~。
SELECT CASE 日付 WHEN ISDATE(日付) THEN ' '
    ELSE 日付
    END AS Expr1
FROM  テーブル
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ