【发布时间】:2019-09-28 18:11:22
【问题描述】:
我需要 1. 将日期转换为 yyyy-mm 格式,以及 2. 从 start_date 和 end_date 计算月份的持续时间,例如持续时间 = 1 个月,...等。 start_date & end_date 是 PostgreSQL 中的日期字符串。我可以以天为单位计算持续时间并将日期转换为 yyyy-mm 格式。
to_char(TO_DATE(end_payperiod_date,'MM/DD/YY'), 'YYYY-MM')
对于月份持续时间计算,我没有发现 to_date() 可以在 PostgreSQL 中转换为 yyyy-mm 格式。 to_char() 可以显示 yyyy-mm,但我不能进行计算。
有什么办法可以把日期转换成yyyy-mm来计算?
【问题讨论】:
-
yyyy-mm是什么意思。那是VARCHAR类型还是数字类型? -
end_payperiod_date是什么数据类型?如果那已经是一个日期,那么在它上面调用to_date()就是一个错误。 -
@a_horse_with_no_name 实际上 end_payperiod_date 是 PostgreSQL 中的字符串
-
你到底为什么要将 DATE 存储为字符串?这是一个非常糟糕的主意。
-
@TheImpaler 数字进行计算。但是,如果它是整数,则不会进行日期计算。例如,如果我想获得 2019-12 和 2020-01 的月份持续时间,则预期月份持续时间为 1 个月。如果我转换为整数,它将产生例如89 为 12/31/2000-1/14/2001
cast(to_char(TO_DATE(end_payperiod_date,'MM/DD/YY'), 'YYYYMM') as integer) - cast(to_char(TO_DATE(begin_payperiod_date,'MM/DD/YY'), 'YYYYMM') as integer)
标签: sql postgresql