我有一个SQLite3数据库,其中包含366行,以及一年中每一天的日期。我需要确保年份是最新的,如果不是,那么我需要将年份更新到当前日历年。我想做的事情如下:
UPDATE daily SET date = DATE('%Y', 'now');
或
UPDATE daily SET date = strftime('%Y', 'now');
但是这些查询只会使日期列为NULL,即使它们按照我的预期运行,我也怀疑它会保留那里的日期和月份。
在MySQL中,我可以执行类似UPDATE daily SET date = ADDDATE(date, INTERVAL 1 YEAR)
的操作 - 但首先,它不是有效的SQLite查询,其次,我需要更新到当前年份,而不是仅仅提升一年。
任何帮助都将不胜感激。
答案 0 :(得分:4)
试试这个:
create table t (id int, d text);
insert into t
select 1, date('2011-01-01') union
select 2, date('2012-03-11') union
select 3, date('2013-05-21') union
select 4, date('2014-07-01') union
select 5, date('2015-11-11');
select * from t;
update t set
d = date(strftime('%Y', date('now')) || strftime('-%m-%d', d));
select * from t;
它使用Date And Time Functions。首先,它需要从字段(strftime('-%m-%d', d)
)开始的月份和日期,然后添加(连接)当前年份(strftime('%Y', date('now'))
)并将其转换为日期。