0

特定の日付の間で検索したい。たとえば、2012 年 8 月 1 日から 2012 年 8 月 13 日までとします。この基準で検索すると、DB に入力された値が得られます。2012 年 8 月 2 日にすると、クエリは null を返します...さらに奇妙なのは、10 日、11 日、または 12 日の日付を選択すると、正常に動作し、結果が得られることです...問題の場所を知りたくて夢中になりました可能性があり、デバッグはどこにも私を導きませんでした....助けてください?

/**query to get the details by giving all the dates/
public Cursor getName_Intime_Outtime_Date(String fromdate,String todate)
   {
    Log.d("pavan","in side the getnameintime out time date() of visistor adapter");
   return this.db.query(DATABASE_TABLE_VISITOR,
      new String[]{KEY_NAME,KEY_CHECKIN,KEY_CHECKOUT,KEY_DATE},
      KEY_DATE + " BETWEEN ? AND ?", 
      new String[] {fromdate ,todate}, 
      null, null, null, null);
   }
4

3 に答える 3

0

これを試してみてください、それは私のために働いています、SELECT * FROM table_name where substr(column_name、7)|| substr(column_name、4,2)|| substr(column_name、1,2)between'YYMMDD'と'YYMMDD'、dates逆の順序にする必要があります。例:日付形式がDD / MM / YYまたはDD-MM-YYの場合、「YYMMDD」を使用できます。

于 2012-08-16T05:49:47.977 に答える
0

本当にこれを調べてくれてありがとう...このリンクhttps://groups.google.com/forum/?fromgroups#!topic/android-developers/Ey_4rBZx2t0%5B1-25%5Dにあるアイデアを使用して最終的にこれを解決しました。 ...私が行ったことを要約すると、Calendarオブジェクトを取得し、Calendarオブジェクトを使用して現在の日付を取得し、取得したデータをsimpledateformatオブジェクトに渡し、その上で比較を行います....サンプルコードを次に示します。 。

int test = date_pick.getMonth()+1;
     Toast.makeText(getBaseContext(), "Date seleted month"+test+"/"+date_pick.getDayOfMonth()+"/"+date_pick.getYear(), Toast.LENGTH_LONG).show();

      Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));  
        cal.set(Calendar.YEAR, date_pick.getYear());
        cal.set(Calendar.MONTH, test);
        cal.set(Calendar.DAY_OF_MONTH, date_pick.getDayOfMonth());

       /* retriving the yyyy mm dd values here*/
         set_year = cal.get(Calendar.YEAR);
         set_month= cal.get(Calendar.MONTH);
         set_day = cal.get(Calendar.DAY_OF_MONTH);
         Log.d("kunal","datesis "+set_year+" "+set_month+" "+set_day);
         string_date = set_year+"-"+set_month+"-"+set_day;


     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
     try {
       d1 = sdf.parse(string_date);
      Log.d("kunal","date came "+d1);
      System.out.println(sdf.format(d1));      

     } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
      date_txt.setText(sdf.format(d1));
于 2012-08-16T11:36:59.783 に答える
0

Sqlite には日付のデータ型がありません。おそらく、日付を TEXT として ISO8601 文字列 ("YYYY-MM-DD HH:MM:SS.SSS") として保存します。
テーブルの日付フィールドを sqlLite データ型INTEGERとして Unix Time、1970-01-01 00:00:00 UTC からの秒数、またはBIGINT(ミリ秒単位の長い Java 時間バージョン) として保存することをお勧めします。

このようにして、数値で使用すると正しい値が返さBETWEENれます。

EDIT日付と時刻の関数
を使用して、クエリから日付文字列を管理できます。これは、日付を文字列として引き続き使用できることを意味しますが、stringDates が SQL WHERE 句で使用されている場合は、変換関数を使用して「DATE」へのキャストを実行します。

于 2012-08-13T11:25:36.827 に答える