日付を扱う場合でもDB上はDate型ではなく文字列として扱う場合もありますか。
そういったサンプルプログラムを見たことがあるので質問させていただきました。
日付を文字列として扱うメリットでデメリットがありましたら教えていただけますでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
DB上はDate型ではなく文字列として扱う場合もありますか。
SQLiteのように、日付型のないデータベースエンジンを使う場合は、そうせざるを得ません。
投稿2020/05/22 23:57
総合スコア145184
0
※すでにBAが付いて質問が閉じてしまいましたが、書いていたので放流させてください:
昔のDBのテーブルやデータを見ていると"YYYYMMDD"
な形式など、CHAR
やVARCHAR
などの型を使ってもろに文字列にしていた例はありますね。DATE
やDATETIME
などのような型があってもそのままにしていたようなケースは多く見かけられました。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総合スコア9183
0
ベストアンサー
DB上はDate型ではなく文字列として扱う場合もありますか。
通常はDate型が使えるDBならDate型で持ちます。
理由は現場や用途にもよるかと思いますが、検索のしやすさ、フォーマットのしやすさからDate型を選択します。
投稿2020/05/23 00:02
総合スコア80850
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。