• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLiteでご教示願います。)

SQLiteでの1日分のデータ取得方法について

このQ&Aのポイント
  • SQLiteでの1日分のデータを取得する方法について質問させてください。
  • DB(MyTable)には商品名(Koumoku)、価格(Nedan)、登録日付(Hizuke)の項目があります。
  • PCやシステムの日付を使用して特定の日付のデータを取得する方法がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
noname#223623
noname#223623
回答No.1

> date(now)等を使ってもうまく行きません。 nowは引用符で囲みます。=> date('now') まずはこれで日付がきちんと取得できることを確認してください。取得できるようであればこれを条件にレコードを抽出します。以下が実行例です。  sqlite> select * from tb1;  id|name|hizuke  1|foo|2010-10-24  2|bar|2010-10-25  3|hoge|2010-10-25  4|piyo|2010-10-26  sqlite> select date('now');  date('now')  2010-10-25  sqlite> select * from tb1 where hizuke=date('now');  id|name|hizuke  2|bar|2010-10-25  3|hoge|2010-10-25 日付の書式が違っていると抽出できないのでstrftimeで書式を変更します。 sqlite> select * from tb2; id|name|hizuke 1|foo|2010/10/24 2|bar|2010/10/25 3|hoge|2010/10/25 4|piyo|2010/10/26 sqlite> select date('now'); date('now') 2010-10-25 sqlite> select strftime('%Y/%m/%d',date('now')); strftime('%Y/%m/%d',date('now')) 2010/10/25 sqlite> select * from tb2 where hizuke=strftime('%Y/%m/%d',date('now')); id|name|hizuke 2|bar|2010/10/25 3|hoge|2010/10/25 参考URLは「SQLite関数の使い方」。日付/時刻関数のところを読めば分かると思う。

参考URL:
http://www.dbonline.jp/sqlite/function/
masaki-oo
質問者

お礼

 masa_pee様、早速の回答ありがとうございました。  質問で1点修正があります。ご指摘のとおりdate('now')としておりました。記録データも間違ってなかったので、どうして反映されないのか、いろいろ調べたところ、Android上でSQLiteを使用している場合注意しないといけない部分がありまして、すぐには反映されず、忘れた頃に結果がしっかり反映されていました。  ともあれ、分かり易く解説して頂き、本当にありがとうございました、大変助かりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLiteで日付の取得

    SQLiteのクエリについてお教え頂けませんでしょうか? テーブル名:MyTable 列名:MyDate(TEXT型) MyDateのデータ 20150501102722_XYZ 20150502102722_AVC 20150505102722_BCD データはYYYYMMDDHHMMSS形式 + ランダムなアルファベットになっています。 クエリで201502以上のデータを取得したいと思っています。つまり、 20150502102722_AVC 20150505102722_BCD 上記の2つのデータが欲しいです。 そこで下記のようなSQLを書きました。 SELECT * FROM MyTable WHERE MyDate >= substr(1,8) しかしデータは1件も取得できませんでした。 そこで、試しに下記のようなクエリも書いてみましたが、これもダメでした。 SELECT * FROM MyTable WHERE MyDate = substr(1,8) どのようにすれば、データを取得する事ができるでしょうか?よろしくお願いいたします。

  • SQLite3の許容される登録数は?

    商品管理のプログラムを組んでいるのですが データベースに「SQLite3」を使いたいと思っています。 SQLite3が、安定して動作できる、登録数(行数)はどれくらいでしょうか。 又は、これくらい登録したら、動作が不安定になった/遅くなったなどの情報でも構いません。 ちなみに、商品データベースといっても、商品名と、価格くらいしか記録しません。 ググってみたのですが、それらしい情報が無くて・・・。 宜しく御願いします。

  • EXCEL VBAでクエリーを使用した抽出方法

    EXCEL VBAでクエリーを使用しデータを抽出する命令で困っています。 原始データ:CSVファイル (カンマ区切り) 項目の中に日付の入った項目があり指定した1日だけの抽出はうまくいきますが、 期間を指定(複数日)した場合にエラーとなってしまいます。 1日だけを指定した場合の命令(うまくいく) 日付という項目には数値タイプのデータが入っている hizukeという変数にテキストボックスの値を代入する hizuke = TEXTBOX日付1.Value SELECT * FROM ファイル名 WHERE 日付 LIKE '%" & hizuke1 & "%' " ※ ここでワイルドカード(%)を使わないとエラーとなってしまいますが・・・ 期間指定をした場合の命令(エラーとなる) 日付という項目には数値タイプのデータが入っている hizuke1という変数にテキストボックスの値を代入する hizuke2という変数にテキストボックスの値を代入する hizuke1 = TEXTBOX日付1.Value hizuke2 = TEXTBOX日付2.Value SELECT * FROM ファイル名 WHERE 日付 BETWEEN LIKE '%" & hizuke1 & "%' AND LIKE '%" & hizuke2 & "%' " この命令が正しいとは思いませんが、要はワイルドカードと演算子(BETWEEN)を併用したい訳です。 この考え方以外で期間指定のデータ抽出ができるのであればその方法を教えて下さい。 以上、よろしくお願いします。

  • 日計を表示したいのですが・・・

    こんにちは。 度々、ここでお世話になっておりますm(__)m 質問がありますのでよろしくお願いいたします。 mySQLのsumで取得した、1日に対する集計(日計)を 1ヶ月のカレンダーになってる表(テーブル)へ、日計の日付にあてはまるように表の上にsumのみを表示していきたいのですがこのsumをどうやって表の日付に対応させていけば良いか・・・、方法としてアドバイスありましたらお願いいたしますm(__)m 今のデータとしては、 カレンダー風の表(テーブル)は1ヶ月単位で管理しています。 各行が商品名 各列が日付(1~31日)となっています。

    • 締切済み
    • PHP
  • 罫線を自動的に引く方法についてご教示下さい

     ご教示下さい。  エクセルで月の行事計画表を作成してます。 横に日付、縦に20名程の氏名を入れています。シートを開けば当日の日付から氏名分の最終セルまでの全体を罫線で自動的に囲む方法がありますか。  下のような行事計画で、今日が3日であれば、シートを開けば3日から会議までのセルの周り(列の周り)を青の罫線で自動的に囲んでくれる方法です。  もちろん4日になると4日の日の列をかこんでいる形になります。  また、縦横を入れ替えた(縦に日付、横に氏名)行事計画表もあるのですが、同じように当日を罫線で囲んでくれる方法も併せてお願いできればと思います。 よろしく、ご教示下さい。    1日 2日 3日・・・31日 A氏   ・  ・  出張  ・・・  ・   ・   ・   ・   ・・・  ・   ・  ・   ・   ・・・ M氏   ・  ・  会議  ・・・

  • フォーム内の同一名のエレメントの数を調べる方法

    PHPではフォーム内の同一名のオブジェクト(正式な呼び方がわかりません)の数を取得する事ができますが、JavaScriptではできないのでしょうか。 PHPでは submit された時に $_POST で同一名のオブジェクトを配列で受け取り、その要素数を取得する事ができます。 たぶん、こんな感じ。  $koumoku = $_POST["koumoku"];  $cnt = count($koumoku); JavaScriptではエレメントの配列と言う考え方が容易でないのか、まったくないのか、エレメント「koumoku[0]」や「koumoku[1]」はこの文字列全体がエレメント名になっていて、[0][1]をインデックスとする配列としては扱えなかったと思います。 それはそれでいいのですが、例えばこのフォーム内から「koumoku」と言う文字列を持つ名前のエレメントの数を、何かしらの関数で調べる方法はないのでしょうか。 あれば、その方法を教えてください。 同一名のオブジェクトの個数回のループ処理がしたいだけなのですが、この個数が変動するのでプログラム内で固定のループ処理にできないで困っています。 なければ document.form.element.length の回数分、document.form.element[x].name で名前を調べながら処理しようと思っています。 そう言う方法が一般的なのでしょうか。

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • 1枚のシートに集計を入力して別シートで印刷

    シート1に日付と商品の個数を入力して別のシートに日付指定してその日の集計を印刷をしたいのですが日付の指定がうまうできないので教えて下さい。 エクセルは2010です。 シート1(入力のみ)      1日   2日   3日・・・・・ 商品1  2    3     5 商品2  4    1     2 商品3  3    3     3 シート2 1日←日付指定 商品1  2 商品2  4 商品3  3 シートを日数分作り印刷をするのも考えたのですが出来ればシートを増やしたくないので ご教授宜しくお願いします。

  • Sqlite3にて、縦持ちデータの一部を横持ち

    お世話になります。 Sqlite3 windows7 使用です。 Sqlite3にて縦持ちの一部を横持ちにする作業をしています。 text_date|name|uriage 05_01  aaa  1 05_01  bbb  2 05_01  ccc  3 05_01  ddd  4 05_01  eee  5 05_02  aaa  6 05_02  bbb  7 05_02  ccc  8 05_02  ddd  9 05_02  fff  10 05_03  aaa  11 05_03  bbb  12 05_03  ccc  13 05_03  ddd  14 05_03  ggg  15 05_04  aaa  16 05_04  bbb  17 05_04  ccc  18 05_04  ddd  19 05_04  hhh  20 列:text_dateには、日付がテキストデータで入力されています。 列:nameには、同一でない名前が一部含まれます。 列:uriageは、INTEGERにて入力されています。 この表の日付(text_date)の任意の2日分を、 名前ごとにグループ化し、日付を横列展開にてuriageの表示をしたいです。 例えば、日付が05_03 と 05_04 のデータを下記のように取得したいです。 name|uriage_03|uriage_04 aaa   11    16 bbb   12    17 ccc   13    18 ddd   14    19 ggg   15   hhh        20 下記のSQL文で 名前(name)をグループ化する前の横列展開はできるのですが、 名前をグループ化すると、片方の日付しか表示されなくなります。 (重複のない人は、そのまま表示されるます) ------------------- select name ,case  when text_date = '05_03' then uriage end as uriage_03 ,case  when text_date = '05_04' then uriage end as uriage_04 from ( select * from test1 where text_date = '05_03' or text_date = '05_04' ) group by name   ←*group byを入れると片方の日付だけが表示 ------------------- ↓nameをグループ化すると片方の日付のみが表示 name|uriage_03|uriage_04 aaa        16 bbb        17 ccc        18 ddd        19 ggg   15   hhh        20 正しいコードをご教示いただけますと幸いです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 配列変数について

    とても基本的なことなのですが <script l anguage = "JavaScript"> week = new Array("日", "月", "火", "水", "木", "金", "土"); hizuke = new Date( ); day = hizuke.getDay( ); document.write("今日の日付 = ", hizuke.getMonth( ) + 1, "月 ", hizuke.getDate( ), "日 ", week[ day ], "曜日" ); </script> このような配列変数ならば、new Date( )によって呼び出された日付に対応して week[ day ]のところが日付に変わることはわかります。 <head> <title> Java </title> <script language = "JavaScript"> function calc( ) { point = new Array( ); point[0] = ei.value * 1; point[1] = su.value * 1 ; point[2] = ko.value * 1; sum = 0; for( i = 0 ; i < 3 ; i ++) { sum += point[i ]; } goukei .val ue = sum; ave = sum / 3; heikin.value = ave; } </script> </head> <body> <hr> <br> 英語 <input type = "text" size = "8" name = "ei "> <br> <br> 数学 <input type = "text" size = "8" name = "su"> <br> <br> 国語 <input type = "text" size = "8" name = "ko"> <br> <br> <hr> <br> <input type = "button" value = "計算" onclick = "calc( )"> <br> <br>3教科合計 <input type = "text" size = "8" name = "goukei "> 点 : 平均点 <input type = "text" size = "8" name = "heikin"> <br> <br> <hr> </body> </html > このような平均点を求めるプログラムでも point = new Array( ); point[0] = ei.value * 1; point[1] = su.value * 1 ; point[2] = ko.value * 1; sum = 0; for( i = 0 ; i < 3 ; i ++) { sum += point[i ]; このように配列変数を使っているのですが、なぜ配列変数をこのように使っているのかが わかりません。 なぜ、平均点を出すときはnew Array( )の( )の中身は何もなくて、上記のような表現を しているのでしょうか? よろしくお願いします。。