-5
 -_id   -lesson_id  -start_time -SUMDUEDURATION -COUNTDUEDURATION   -INTERVAL
    -105    -1  -2013-10-16 07:26:52.000    -92736  -9  -301418
    -108    -1  -2013-10-18 07:03:52.000    -164282 -3  -555779
    -116    -1  -2013-10-21 11:49:44.000    -1455866-7  -3533900
    -128    -1  -2013-10-22 11:12:55.000    -53795  -12 -108334
    -132    -1  -2013-10-30 03:27:46.000    -2036   -1  -663295276

これはユーザー アクション テーブルのレコードです。月に数日だけ、他の日付を自動的に挿入する MySQL のようなイベント スケジュールがあります。

私はこれを使用して日付テーブルをクロスしますが、十分ではありません:

select _id,lesson_id,start_time, ifnull(sum,0) as SUMDUEDURATION, ifnull(COUNT,0) as COUNTDUEDURATION, ifnull(interval, 0) as INTERVAL
from dates left join (
SELECT month,_id, lesson_id, sum(duration) as sum,count(_id) as count,interval, 
start_time,end_time,
max(date(" + START_TIME + ", 'weekday 0', '-7 day')) as WeekStart,
max(date(" + START_TIME + ", 'weekday 0', '-1 day')) as WeekEnd
FROM user_action where lesson_id = 1 group by month )  monthdate  using(month)  
where strftime('%Y%m',date) = strftime('%Y%m','now')
4

2 に答える 2

0

Serviceを作成し、それを使用して、必要なときにのみ行を追加できます (たとえば、起動完了時、週に 1 回など)。

ここには、Android OS でサービスを作成する方法についての優れたチュートリアルがあります。

特定のスケジュールでサービスを開始するには、AlarmManagerについてもお読みください。

Calendar cal = Calendar.getInstance();

Intent intent = new Intent(this, MyService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);

AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
// Start every 30 seconds
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent); 
于 2013-10-31T12:08:01.783 に答える
0

私の知る限り、これは日時ではなくタイムスタンプでのみ達成できます。デフォルトのタイムスタンプを追加する方法の簡単な例を次に示します。

create table test (str varchar(32), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

編集:気にしないでください、私はどういうわけかあなたがmysqlにそれを望んでいると思いました.

于 2013-10-31T12:19:23.950 に答える