teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

ソート部分の記述を修正

2020/05/23 00:24

投稿

dodox86
dodox86

スコア9416

answer CHANGED
@@ -4,6 +4,6 @@
4
4
 
5
5
  * タイムゾーン情報が無い。UTC/GMTなのかJST+09:00なのか分からない。(例えば`"2020-05-23"` だった場合、2020-05-23 00:00:00(JST) か 2020-05-23 23:59:59(JST) とみるかでUTC/GMTでの日付の認識がズレる。
6
6
  * 文字列である以上、神経質に考えると日付として不正な文字列があった場合のエラーケースを考える必要がある。
7
- * `DATETIME`のように内部でシリアル値をもっている(はず)の型と比べて、辞書順のソートをする上でも特にアドバンテージが無い。
7
+ * `DATETIME`のように内部でシリアル値をもっている(はず)の型と比べて、日付でソートをする際にも特にアドバンテージが無い。普通に考えて文字列での辞書順での比較は、`DATETIME`で持っているであろう、よりプリミティブな型での比較より、遅いはず。
8
8
 
9
9
  既に回答いただいているように日付型をもたないDBでは文字列にせざるを得ませんが、UTC/GMT、ローカル時間のどちらかに寄せるか、タイムゾーン情報を入れておく必要があると思います。

1

記述を調整

2020/05/23 00:24

投稿

dodox86
dodox86

スコア9416

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  **※すでにBAが付いて質問が閉じてしまいましたが、書いていたので放流させてください:**
2
2
 
3
- 昔のDBのテーブルやデータを見ていると`"YYYYMMDD`な形式など、`CHAR`や`VARCHAR`など型を使ってもろに文字列にしていた例はありますね。`DATE`や`DATETIME`などのような型があってもそのままにしていたようなケースは多く見かけられました。DBのデータを覗いたときに見た目そのままに認識できるメリットはありますが、
3
+ 昔のDBのテーブルやデータを見ていると`"YYYYMMDD"`な形式など、`CHAR`や`VARCHAR`など型を使ってもろに文字列にしていた例はありますね。`DATE`や`DATETIME`などのような型があってもそのままにしていたようなケースは多く見かけられました。DBのデータを覗いたときに見た目そのままに認識できるメリットはありますが、
4
4
 
5
- * タイムゾーン情報が無い。UTC/GMTなのかJST+09:00なのか分からない。(`2020-05-23'だった場合、'2020-05-23 00:00:00(JST)''2020-05-23 23:59:59(JST)'とみるかでUTC/GMTでの日付の認識がズレる。
5
+ * タイムゾーン情報が無い。UTC/GMTなのかJST+09:00なのか分からない。(例えば`"2020-05-23"` だった場合、2020-05-23 00:00:00(JST) か 2020-05-23 23:59:59(JST) とみるかでUTC/GMTでの日付の認識がズレる。
6
6
  * 文字列である以上、神経質に考えると日付として不正な文字列があった場合のエラーケースを考える必要がある。
7
7
  * `DATETIME`のように内部でシリアル値をもっている(はず)の型と比べて、辞書順のソートをする上でも特にアドバンテージが無い。
8
8