質問お願いします。
text型で持っている[日付+時刻]のデータをdate型に変換後、そのデータと現在時刻の引き算を行いたいのですがSQLiteだとどのような関数を用いれば実現できるのでしょうか?
【状況】
◇現在はtextデータでyyyymmddhh24missを所有。
◇date型に変換できず困惑中。
◇まだ先ですが...引き算をするにはやっぱりInt型に変換が必要?
もしくは関数でtoSecond(sysdate, 保持date型データ)みたいなことが可能?
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
データベースの勉強から意図的に逃げてたんで詳しくなく手探りです。
なんというかSQLiteの仕様にイラッとしました。
//======================================
http://www.sqlite.org/datatype3.html
>Datatypes In SQLite Version 3
SQLite 3におけるデータ型
(中略)
>1.2 Date and Time Datatype
1.2 日付と時刻のデータ型
>SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:
SQLiteには日付や時刻を格納して蓄えておくためのクラスはない。そのかわり、SQLiteのビルトインの日付時刻関数は、日付の時刻をTEXT,REAL,INTEGERの値のどれかとして格納する
>TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
>REAL as Julian day numbers, the number of days since noon in on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
>INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
TEXTはISO8601の文字列
REALはグリニッジ天文台における、先発グレゴリオ暦 紀元前4714年 正午からの経過日数
INTEGERは1970-01-01 00:00:00 UTCからの経過秒数
>Applications can choose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.
アプリケーションはこれらのどのフォーマットで日付や時刻のデータを格納するかというのを選択でき、ビルトインの日付時刻関数を使ってこれらを自由に変換できる。
================================//
さて、ISO8601として認められる書式は
http://www.sqlite.org/lang_datefunc.html
のTime Stringsに乗っている(訳すのは面倒だがわかるだろう)
自分で変換しろってかorz
文字列操作をいちいちやる。
http://ideone.com/5EOaS
ユーザー定義関数みたいなものが作れれば楽なんだけどなあ、確かストアドプロシージャって名前聞いたことあるような。うん、あってるか自信ないけど、とりあえず機能的には、それっぽい
//===========================
http://www.sqlite.org/whentouse.html
>Appropriate Uses For SQLite
SQLiteの適切な利用法
>SQLite is different from most other SQL database engines in that its primary design goal is to be simple:
SQLiteは他の大半のデータベースエンジンと違って、その主な設計目標は「シンプルである」ことである。
(中略)
>Simplicity in a database engine can be either a strength or a weakness, depending on what you are trying to do. In order to achieve simplicity, SQLite has had to sacrifice other characteristics that some people find useful, such as high concurrency, fine-grained access control, a rich set of built-in functions, stored procedures, esoteric SQL language features, XML and/or Java extensions, tera- or peta-byte scalability, and so forth. If you need some of these features and do not mind the added complexity that they bring, then SQLite is probably not the database for you. SQLite is not intended to be an enterprise database engine. It is not designed to compete with Oracle or PostgreSQL.
データベースエンジンにおいて「シンプルさ」は、あなたがやろうとしていること次第で、強みにもなるし弱みにもなる。「シンプルさ」を達成するため、SQLiteは、便利だと感じる人もいる他の機能 - 高い同時実行性やきめ細かいアクセス制御、大量のビルトイン関数、【ストアドプロシージャ】、難解なSQL言語機能 (以下略) 等を犠牲にしなければならなかった。
======================================//
…このまま関数に纏めて単純化は出来ないってことねorz
その日付時刻関数とやらを見てみましょうかね。
http://www.sqlite.org/lang_datefunc.html
ええと、modifierには第一引数に指定された日時に対して操作を加えられる。unixepochは後ろがepochからの秒数を表す数値をDDDDDDDDDD形式にした文字列でない場合には未定義…だから役に立たない。julianday以外は文字列を返しちゃうのでこれしか使えません。julianday関数はさっきも言ったとおり基準日からの日数が帰ります
ってことで、さっきちょっと見せちゃったけど
こういうふうに書くことになった。
http://ideone.com/5EOaS
で、2013年01月12日7時55分1秒と2012年01月12日7時55分1秒の差を求めると、
2012年は閏年なので366.0日が出力されている。だからこれが正しいんだろう。
#と、ここまで書いてから思ったけど、何で3月じゃなくて1月でやったんだろうね、俺
回答遅くなってしまい申し訳有りませんでした。
大変参考になりました、有り難うございます。
やはりこのようにゴリゴリに組まなければならないのですね。。。
教えて頂けた方法をファンクションにして、実用レベルの高いものが作れればソレを利用する方向で考えて行こうと思います。
というか...その柔軟性がSQLiteの売りなのかな。。とか思いました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
SQliteの日付検索について
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelグラフの日付軸の日付がず...
-
重複するIDのデータを1行にま...
-
SQLで部分的にGROUP BYしたいとき
-
SQLサーバで和暦から西暦に変換...
-
SQL ブレーク処理について
-
一秒ごとに更新をかける方法
-
日付書式に変換でこまっています!
-
Oracle10gのsql分についての質...
-
WHERE句にて「30日前から今日ま...
-
エクセルのヘッダーを変数で指...
-
テーブルの主キーをdate型...
-
OSのシステム日付を変更して...
-
今日の日付が入った行のデータ...
-
oracle 文字列 01:45 を時間に...
-
SQL/Loaderでの年月日時分秒の...
-
Accessの数値から時間に変換す...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
日数算出SQL
-
Access VBAで行ラベルが定義さ...
-
Accessのマクロでモジュールを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLで部分的にGROUP BYしたいとき
-
Accessの数値から時間に変換す...
-
今日の日付が入った行のデータ...
-
重複するIDのデータを1行にま...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
SQLサーバで和暦から西暦に変換...
-
テーブルの主キーをdate型...
-
日付の切り出し方法について
-
日付書式に変換でこまっています!
-
oracle 文字列 01:45 を時間に...
-
Excelグラフの日付軸の日付がず...
-
日付型なら変数の先頭になん...
-
SQL/Loaderでの年月日時分秒の...
-
エクセル 日付による並べ替え...
-
ExcelのSUMPRODUCTで日付の範囲...
-
23時59分59秒までのデータを抽...
-
DB2のSQL(日付)について
-
excel 日付のみ置換したいのです
-
ACCESSでDate関数のエラーのついて
-
WHERE句にて「30日前から今日ま...
おすすめ情報