问题:如何使日期时间的数据自动增量?
自动增量是指日期自动递增,比如表中有个字段(field)名为“日期”,第1条数据值为2016-07-01,那么创建数据时字段(field)能够“日期”字段能够以天为单位递增。第2条数据值为2016-07-02,第3条数据为2016-07-03 … …。
上述功能实现了自动填充日期字段功能。
上图中,date字段描述了自动增量。注意:此表(table)名称为“diet data”。
那么如何实现上述日期时间的自动增量?接下来请看解决办法。
日期时间类数据自动增量的解决方法
```SQL
insert into [diet data] (date) values((select date(max(date),'+1 day') from [diet data]))
```
此处用到结构化查询语法(SQL):
insert into table (column_list) values (value_list);
其中:
- (SELECT date(max(date),’+1 day’) FROM [diet data] 是date字段的值。也就是语法结构中的 ( value_list)。
- 注:虽然很长的一段代码,返回的结果是一个日期的值,比如2016-07-10。
max(date) 是找出date字段中最大的值。在这里主要的功能是找到上一条日期,这里data的类型为text,也称为字符串。这里date(max(date),’+1 day’)主要功能是:在上一条data数据日期基础上加1天。这个函数实现了日期的自动增量,是实现日期时间的自动增量的关键。
如果你想实现月份为单位的自动增量,年份为单位的自动增量,你就需要更多的了解data函数,结合max()函数就可以实现日期时间的自动增量了。date(timestring, modifier, modifier, ...)
date函数具体的使用方法请参照sqlite的官网Date And Time Functions的解释
总结:所用到的函数与语法
日期时间函数
date(timestring, modifier, modifier, …)
寻找字段(field)中最大值的函数
max(X)
The max() aggregate function returns the maximum value of all values in the group. The maximum value is the value that would be returned last in an ORDER BY on the same column. Aggregate max() returns NULL if and only if there are no non-NULL values in the group.- SQL语法
insert into table (column_list) values (value_list);