質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

979閲覧

Java 日付を扱う場合でもDB上では文字列として扱う場合もありますか

cout

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/05/22 23:50

日付を扱う場合でもDB上はDate型ではなく文字列として扱う場合もありますか。
そういったサンプルプログラムを見たことがあるので質問させていただきました。

日付を文字列として扱うメリットでデメリットがありましたら教えていただけますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/22 23:59

念のため想定するDBの種類とバージョンも提示してください。
guest

回答3

0

DB上はDate型ではなく文字列として扱う場合もありますか。

SQLiteのように、日付型のないデータベースエンジンを使う場合は、そうせざるを得ません。

投稿2020/05/22 23:57

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cout

2020/05/23 00:09

ありがとうございます!
guest

0

※すでにBAが付いて質問が閉じてしまいましたが、書いていたので放流させてください:

昔のDBのテーブルやデータを見ていると"YYYYMMDD"な形式など、CHARVARCHARなどの型を使ってもろに文字列にしていた例はありますね。DATEDATETIMEなどのような型があってもそのままにしていたようなケースは多く見かけられました。DBのデータを覗いたときに見た目そのままに認識できるメリットはありますが、

  • タイムゾーン情報が無い。UTC/GMTなのかJST+09:00なのか分からない。(例えば"2020-05-23" だった場合、2020-05-23 00:00:00(JST) か 2020-05-23 23:59:59(JST) とみるかでUTC/GMTでの日付の認識がズレる。
  • 文字列である以上、神経質に考えると日付として不正な文字列があった場合のエラーケースを考える必要がある。
  • DATETIMEのように内部でシリアル値をもっている(はず)の型と比べて、日付でソートをする際にも特にアドバンテージが無い。普通に考えて文字列での辞書順での比較は、DATETIMEで持っているであろう、よりプリミティブな型での比較より、遅いはず。

既に回答いただいているように日付型をもたないDBでは文字列にせざるを得ませんが、UTC/GMT、ローカル時間のどちらかに寄せるか、タイムゾーン情報を入れておく必要があると思います。

投稿2020/05/23 00:14

編集2020/05/23 00:24
dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/23 00:20

バリデーションやソートの問題はアプリケーションに直結するので大事ですね。
dodox86

2020/05/23 00:27 編集

そうですね。私自身はSQLite3を使う機会が多いので、日時の文字列表現、格納形式にいつも悩みます。
guest

0

ベストアンサー

DB上はDate型ではなく文字列として扱う場合もありますか。

通常はDate型が使えるDBならDate型で持ちます。
理由は現場や用途にもよるかと思いますが、検索のしやすさ、フォーマットのしやすさからDate型を選択します。

投稿2020/05/23 00:02

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cout

2020/05/23 00:09

分かりました。 ありがとうございます。
m.ts10806

2020/05/23 00:25

実際は「用途にもよる」です。 要件明確でないまま「これがいい」と妄信的に採用することは出来ません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問