Postgres SQL在减去日期时使用CTE
我试图根据cte_film中select语句的整数结果减去当前日期。但是,将select语句放在select now间隔内会给我带来问题Postgres SQL在减去日期时使用CTE,sql,postgresql,Sql,Postgresql,我试图根据cte_film中select语句的整数结果减去当前日期。但是,将select语句放在select now间隔内会给我带来问题 WITH cte_film AS ( SELECT configvalue from TRAC.configvalues con where configcd = 'processingday' ), cte_filma AS (SELECT now() - (select configvalue from cte_film) * INTERVAL '1 da
WITH cte_film AS (
SELECT configvalue from TRAC.configvalues con where configcd = 'processingday'
),
cte_filma AS
(SELECT now() - (select configvalue from cte_film) * INTERVAL '1 day')
SELECT * from cte_filma;
错误:运算符不存在:字符变化*间隔
第5行:…立即选择-从cte_胶片中选择配置值*
间隔
^提示:没有与给定名称和参数类型匹配的运算符。你
可能需要添加显式类型转换
按以下方式更改您的第二个CTE:
WITH
cte_film AS (
SELECT configvalue
FROM TRAC.configvalues
WHERE configcd = 'processingday'
),
cte_filma AS (
SELECT now() - configvalue::int * INTERVAL '1 day'::interval
FROM cte_film
)
SELECT * FROM cte_filma;
按以下方式更改您的第二个CTE:
WITH
cte_film AS (
SELECT configvalue
FROM TRAC.configvalues
WHERE configcd = 'processingday'
),
cte_filma AS (
SELECT now() - configvalue::int * INTERVAL '1 day'::interval
FROM cte_film
)
SELECT * FROM cte_filma;
我可能过分简化了你的问题,但据我所知,你根本不需要CTE。试试这个:
SELECT now() - configvalue
FROM trac.configvalues
WHERE configcd = 'processingday'
如果您不需要时间,请使用当前日期而不是现在。请看区别:
SELECT current_date - 1, now() - '1 day'::INTERVAL;
?column? | ?column?
------------+-------------------------------
2020-03-11 | 2020-03-11 16:23:56.384132+01
(1 Zeile)
我可能过分简化了你的问题,但据我所知,你根本不需要CTE。试试这个:
SELECT now() - configvalue
FROM trac.configvalues
WHERE configcd = 'processingday'
如果您不需要时间,请使用当前日期而不是现在。请看区别:
SELECT current_date - 1, now() - '1 day'::INTERVAL;
?column? | ?column?
------------+-------------------------------
2020-03-11 | 2020-03-11 16:23:56.384132+01
(1 Zeile)
谢谢你的意见。我能用计算机解决这个问题 cte_filma作为“立即选择”-间隔“1天”配置来自cte_film的值
谢谢你的意见。我能用计算机解决这个问题 cte_filma作为“立即选择”-间隔“1天”配置来自cte_film的值
你能详细说明一下这个问题吗?我想根据cte_film中select语句的整数结果减去当前日期。你试过了吗?从trac.configvalues con中选择CURRENT_DATE-configvalue,其中configcd='processingday'到sutract一天您可以使用,例如,CURRENT_DATE-1或带有日期列configvalue-1如果将第二个CTE作为CTE_filma编写为SELECT now-INTERVAL'1天'*CTE_Film中的configvalue,则第二个CTE可能更清晰。您可以详细说明一下这个问题吗?我正在尝试根据CTE_Film中SELECT语句的整数结果减去当前日期。您尝试过吗?从trac.configvalues con中选择CURRENT_DATE-configvalue,其中configcd='processingday'到sutract一天您可以使用,例如,当前日期-1或带有日期列configvalue-1如果将第二个CTE作为CTE\u filma写入“立即选择”-间隔“1天”*CTE\u filmconfigvalue中的configvalue*间隔“1天”::间隔可以进一步简化为间隔天=>configvalueconfigvalue*间隔“1天”::间隔可以进一步简化为如果您不需要时间,请考虑使用CurrnGyDATE—1。检查我的答案和@ AyHORSESY,没有名字的建议。这个解决方案太复杂了,如果你不需要时间,考虑使用CurrnEngEd- 1。请检查我的答案和@a_horse_与_no_name的建议。此解决方案太复杂了。Hello,我在尝试此解决方案时遇到以下错误。错误:运算符不存在:字符变化*间隔行8:立即选择-配置值*间隔“1天”::间隔^HINT:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。configvalue不是整数吗?您好,我在尝试此操作时遇到以下错误。错误:运算符不存在:字符变化*间隔行8:立即选择-配置值*间隔“1天”::间隔^HINT:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。configvalue不是整数吗?