仅更新SQLite列中的年份

时间:2013-10-17 20:35:33

标签: sqlite

我有一个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查询,其次,我需要更新到当前年份,而不是仅仅提升一年。

任何帮助都将不胜感激。

1 个答案:

答案 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')))并将其转换为日期。

SQL Fiddle live example