mysqlで、日時フィールドデータよりDATE()関数を使い日付を抜き出すとjavaエラーが出ます。

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 mysqlで、日時フィールドデータよりDATE()関数を使い日付を抜き出すとjavaエラーが出ます。

3 件の投稿を閲覧中 - 1 ~ 3 件(全 3 件)
  • 著者
    投稿
  • #4184
    820ys163
    一般参加者

    対象データーベースにある、受注日(日時フィールド形式:DATETIME)を対象に、Selectし
    MZシステム上に表示をする処理なのですが、Select時に対象フィールドに対し「date(jyucyu)」
    として、「2015-05-30 8:30:00」のデータから「2015-05-30」のみを抜き出す処理をした場合
    テーブルにデータベースコンポーネントでSQLを実行後、取得すると「javaエラー」が
    でます。
    また、 「Time(jyucyu)」(時間だけを抜く出す)の場合も、同様にJavaエラーになります。

    何か、対策はありますのでしょうか。

    #4191
    MZPlatformユーザー会
    サイト管理者

    当方で試してみましたが,状況を再現できませんでした.
    お使いのSQL文,テーブル,または,MZプラットフォームからの検索の
    手順について,もう少し情報をご連絡いただけますでしょうか.

    MySQLでdate(フィールド名),time(フィールド名)を使用し,
    例えば,Select date(フィールド名), time(フィールド名) from テーブル名
    というSQL文を実行した場合,検索結果として,
    MySQLのDATE型(日付のみ),TIME型(時刻のみ)のテーブルが
    返ってきます.

    MZプラットフォームでこのテーブルを受け取った際には,
    両方の列がDate型(日付型=日付と時刻の両方を含む)に自動的に変換された
    テーブルデータが取得できるはずです.

    添付いただきましたアプリケーション画面の画像を拝見しますと,
    文字列データ(java.lang.String)がバイナリ型等([B)の列に設定できない
    とのエラーが表示されております.
    通常,上述のように文字列型ではなく,Date型(日付型)のデータとして
    取得されるはずです.

    お手数をおかけし申し訳ございませんが,
    作成中のアプリケーションにつきまして,特にフィールドの型に関係する
    処理についてご確認いただき,再度,ご連絡いただければと存じます.

    #4200
    820ys163
    一般参加者

    お世話になります。

    早速ですが、質問させていただきました上記の内容ですが、javaエラーになる原因がわかりました。
    サポート内容にあったとおり、原因の基は「文字列データ(java.lang.String)がバイナリ型等([B)の列に設定できない」のところでした。
    SQL文でデータを検索した際に、CASE文を使い日付データを表示する場所で、データの
    中で時間データが無い場合には、「空白(’’)」を表示しないさいとしてしていました。
    それが検索されたデータの0行目からあり、そのデータがテーブルに書き込まれた段階で、列
    属性が「文字型」になるので、後から書き込まれる日付データは「型違い」となりjavaエラーになったようです。
    私も、エラー文を解釈したところ理由がわかり、CASE文のところを「null」に変更し
    エラーをなくすことができました。
     ※nullにすることで、正常に対象列が「日付型」で判断できるように
      なりました。

    ご迷惑をおかけしました。

3 件の投稿を閲覧中 - 1 ~ 3 件(全 3 件)
  • このトピックに返信するには、ログインしてください。