
MySQLのdatetime型カラムに「月」や「日」だけ不明なデータを格納したいのですが、どうすれば良いでしょうか?
・具体的なパターンは、下記3フォーマットの何れかです
・2013-03-02
・2013-03
・2013
※月日が不明なデータは全体の一部
■案1
・不明な日付を0に置き換え格納
・2013-03-00
・2013-00-00
■案2
・不明な日付を1に置き換え格納
・2013-03-01
・2013-01-01
※本来の日付と見分けがつかなくなる
■質問
・日付不明が後で判別できるよう、出来れば0で置き換えたい
・MySQL的に問題ないでしょうか?
・一般的に日付が不明なデータはどのように処理するのでしょうか?
■環境
・MySQL
・PHP
No.3ベストアンサー
- 回答日時:
一応、0月0日 は許容されています。
年は4桁指定で 2014-00-00 , 2013-03-00 のようになるべく省略せず指定すべきではありますが。マニュアルみるとinsert時の年月日指定フォーマットは、結構柔軟に対処されます。where 文で比較するときは、そのような日付は、2014-00-00 であれば2013前年より後で、2014-01-01より前と解釈されます。
http://dev.mysql.com/doc/refman/5.1/ja/date-and- …
「SQL モード」でも許容されるかが変わるので、ご注意ください
参考URL:http://dev.mysql.com/doc/refman/5.1/ja/date-and- …
No.2
- 回答日時:
datetime型では、完全な日付時刻しか扱うことが出来ないです。
残念ですが、案1を実験してみれば、エラーになったと思います。
日付しか扱わないのであれば・・・
年・月・日の3つのintフィールドを準備して、不明の部分には、nullを入れるくらいしか思いつけないですね。
この場合、日付計算に関わる部分は、PHP側で処理をするしか有りません。
sql側でも日付処理が必要な何かがあるのであれば、年月日フィールドとは別に、datetimeフィールドを持ち、不明の月や日にはデフォルトで1を適用するくらいかなぁ。この場合は、不明な1か明らかな1かは、月・日のフィールドから判定可能です。
このフィールドを持つと、情報が冗長化しますので、年・月・日の各フィールドとdatetimeフィールドの整合性は、php側で保証してあげる必要があります。
文字列で、不明フィールドを0にした日付を持たせるのも一案かと思います。案1の形式で、datetime型を使わずに、char型にしてしまうという手です。
この場合も、日付計算は、PHP側でやらないとしかたがないですね。まともに、sqlで型変換するエラーになってしまいますから。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- 中古バイク 中古バイク整備不良、裁判出来ますか 8 2022/05/30 23:13
- 査定・売却・下取り(車) 車の名義変更について 3 2022/05/13 21:54
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
- 政治 日本で訴訟件数が少ないのは、自民党とビッグモーターが詐欺組織だからですか? 2 2023/07/27 11:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
項目以外の文字列は連結できま...
-
複数のテーブルから値を合計出...
-
型変換
-
<SQL>重複しているデータの場合...
-
先期末日の日付を求めるSQL
-
LIKE検索で範囲指定の方法
-
日付や日時を格納する場合の型...
-
mysqlでunixtimeによる日付範囲...
-
MySQLにおける条件/公開日を指...
-
SQLです教えてくださいお願いし...
-
MySQLのtimestamp型について
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
int型フィールドにnullを登録で...
-
date関数を教えてください
-
【PL/SQL】FROM区に変数を使う方法
-
データ
-
UPDATEのCASE文で・・
-
テーブルの最後(最新)のレコー...
-
重複レコードを処理しない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のテーブルから値を合計出...
-
<SQL>重複しているデータの場合...
-
MySQLで特定のグループの上位3...
-
mysqlでクロス集計を取りたいが...
-
最新の日付と2番目の日付のデー...
-
日付検索で0001-01-01 00:00:00...
-
直近1ヶ月に誕生日を迎える社員...
-
SQLで、同じ値が何回連続す...
-
PHPとMYSQLを使用したデータベ...
-
Mysqlで最新の日付を持つデータ...
-
DISTINCTROWについてです。
-
下記の問合せを行うクエリを、 ...
-
MySQLのdatetime型に0月0日を格納
-
SQL 重複しないJoinの仕方を教...
-
保存時間から10日後の判定
-
SQL Serverでデータの表示順を...
-
日付のフォーマット
-
サブクエリを使わない方法
-
MySQLのDatetime型の検索方法
-
NULLは表示順最下位
おすすめ情報