如何将日期舍入到最近的月份,然后在SQLLite中添加一个月?

如何将日期舍入到最近的月份,然后在SQLLite中添加一个月?,sql,sqlite,Sql,Sqlite,我想在数据中添加一个月,我将其四舍五入到最低月份 在postgresql中,它的代码很简单,与 with month as (select '2020-01-15' as n_month) select date_trunc('month', n_month) as floored_month, dateadd('month', 1, date_trunc('month', n_month)) as floored_month_plus_one from month 我想用SQ

我想在数据中添加一个月,我将其四舍五入到最低月份

在postgresql中,它的代码很简单,与

with month as 
(select '2020-01-15' as n_month)

select
   date_trunc('month', n_month) as floored_month,
   dateadd('month', 1, date_trunc('month', n_month)) as floored_month_plus_one
from month
我想用SQLLite实现相同的表

这是到目前为止我的代码

with month as 
(select '2020-01-15' as n_month)

select 
     strftime('%Y-%m', n_month) as floored_month,
     date(strftime('%Y-%m', n_month), '+1 months') as floored_month_plus_one
from month 

但不幸的是,这给了我一个错误

您需要day组件来按照您的方法执行此操作。因此:

with month as (
      select '2020-01-15' as n_month
     )
select strftime('%Y-%m', n_month) as floored_month,
       date(strftime('%Y-%m', n_month) || '-01', '+1 months') as floored_month_plus_one
from month 

不需要连接。
您可以使用函数和修饰符
“月初”
“+1个月”

with month as (select '2020-01-15' as n_month)
select date(n_month,  'start of month') as floored_month,
       date(n_month,  'start of month', '+1 month') as floored_month_plus_one
from month
看。 结果:


另一种方法是使用'strftime('%Y-%m-%d',n_month,'start of month')','然后对该值使用dateadd
> floored_month | floored_month_plus_one
> :------------ | :---------------------
> 2020-01-01    | 2020-02-01