我有一个SQLite DB,其日期字段如下:
2011/06/15
2012/03/23
2013年3月23日
我想要做的是删除斜线(简单而且我已经完成了)但我希望每年使用顺序编号来制作日期,如下所示:
20110615.0001
20110615.0002
20120615.0001
20120615.0002
20120615.0003
20130615.0001
20130615.0002
20140615.0001
每年都会以一种单独的顺序方式计算,我从1998年到2014年有几年的历史,每一年都有成千上万的记录
为了澄清更多的事情,我在sqlite DB中存储了大约200万条记录并且每条记录都有一个日期,想要使用该日期为每条记录提供一个唯一的ID,如上例所示,当天或月份是不重要但我想用年份作为ID 2011 ****的基础.0001,2011 ****。0002并从0001计算到今年的任何数字和另一年开始重新计算......我希望我说清楚
感谢 ITD法
答案 0 :(得分:0)
假设日期值已经采用yyyymmdd
格式,您可以计算出同一年的前几行数量:
UPDATE MyTable
Set MyDate = MyDate ||
printf('.%04d', (SELECT COUNT(*)
FROM MyTable AS T2
WHERE substr(T2.MyDate, 1, 4) =
substr(MyTable.MyDate, 1, 4)
AND T2.MyDate <= MyTable.MyDate))
如果有重复日期,则必须使用其他一些唯一列:
UPDATE MyTable
Set MyDate = MyDate ||
printf('.%04d', (SELECT COUNT(*)
FROM MyTable AS T2
WHERE substr(T2.MyDate, 1, 4) =
substr(MyTable.MyDate, 1, 4)
AND T2.rowid <= MyTable.rowid))