Kouhei Sutou
kou****@clear*****
2015年 9月 2日 (水) 22:47:18 JST
須藤です。 In <20150****@domai*****> "[groonga-dev,03450] Mroonga の timestamp 型の範囲について" on Wed, 02 Sep 2015 13:47:15 +0900, 各務 洋 <kagam****@outwa*****> wrote: > mktime を使用しているという事は、それぞれの使用しているOS由来の範囲 > (time_t)になるという認識でよいでしょうか? はい、そうです。 > ここで1点気になったのが、Mroonga の timestamp 型 についてです。 > これだけ、まだ「0000-00-00 00:00:00」が保存可能なのです。 > (既存のレコードにも存在しています) > > そこで質問なのですが、 > > 1.Mroonga の timestamp 型 は「0000-00-00 00:00:00」が存在しても良いものなのか。 よいです。 Groonga的にはこのときは0秒という値を持っています。 UNIX秒なので1970-01-01 00:00:00という時刻を表す値です。 MroongaはGroongaのこの値をMySQLに渡します。 MySQLはTIMESTAMP型の0秒という情報を「0000-00-00 00:00:00」と して扱います。 よって、(MySQL的に)「0000-00-00 00:00:00」という値が存在し ます。Groonga的にこの値と同等の値の0秒という値は、Groonga的 には「1970-01-01 00:00:00」というGroongaにとって妥当な値なの で問題ありません。 > 2.この値は index には影響ないのか? ありません。 「0000-00-00 00:00:00」で検索してもインデックスを使って検索 できます。 > -- おまけ > > INSERT INTO tbl_test_pat_0007 (t_datetime, t_timestamp, t_date, t_value) VALUES ('2038/2/1 12:34:56', '2038/2/1 12:34:56', '2038/2/1', 'test1'); >> Query OK, 1 row affected, 1 warning (0.00 sec) > > SHOW WARNINGS; > +---------+------+------------------------------------------------------+ > | Level | Code | Message | > +---------+------+------------------------------------------------------+ > | Warning | 1264 | Out of range value for column 't_timestamp' at row 1 | > +---------+------+------------------------------------------------------+ > 1 row in set (0.00 sec) > > > SELECT * FROM tbl_test_pat_0007; > +----+---------------------+---------------------+------------+---------+ > | id | t_datetime | t_timestamp | t_date | t_value | > +----+---------------------+---------------------+------------+---------+ > | 1 | 0000-01-01 00:00:00 | 0000-00-00 00:00:00 | 0000-01-01 | test1 | > | 2 | 2038-02-01 12:34:56 | 0000-00-00 00:00:00 | 2038-02-01 | test1 | > +----+---------------------+---------------------+------------+---------+ > 2 rows in set (0.00 sec) TIMESTAMP側の範囲はMySQLがチェックしてくれていますね。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/