如何检查日期是否与另一列中的日期在同一个月 SQL BQ

问题描述 投票:0回答:2

我的 BQ 表中有两个日期字段。一个是

start_date
,另一个是
end_date
。两列的数据类型均为:
DATE
。数据如下:

start_date           end_date
2022-02-28           2022-02-28
2022-02-28           2022-03-01
2022-03-01           2022-03-02
2022-03-01           2022-04-01

我需要创建一个新列并检查两个日期是否在同一个月内。值为“是”和“否”。如果两个日期在同一个月内,则为“是”,否则为“否”。 这是所需的输出:

start_date           end_date              outcome
2022-02-28           2022-02-28              yes
2022-02-28           2022-03-01              no
2022-03-01           2022-03-02              yes
2022-03-01           2022-04-01              no

我尝试过:

select
    case
        when (DATE(start_date)) = (
            DATE(end_date),
            INTERVAL 1 MONTH
        )
    ) then 'yes'
    else 'no'
end as outcome
FROM
    my_bq_table

出现错误:

No matching signature for operator = for argument types: DATE, STRUCT<DATE, INTERVAL>. Supported signature: ANY = ANY

sql date datetime google-bigquery intervals
2个回答
2
投票

我建议使用“提取”来完成此任务。请看下面。

架构(MySQL v8.0)

CREATE TABLE Date_Table (
  `start_date` DATE,
  `end_date` DATE
);

INSERT INTO Date_Table
  (`start_date`, `end_date`)
VALUES
  ('2022-02-28', '2022-02-28'),
  ('2022-02-28', '2022-03-01'),
  ('2022-03-01', '2022-03-02'),
  ('2022-03-01', '2022-04-01');

查询#1

select *,
case when extract(month from start_date) = extract(month from end_date) then "Yes" else "No" End as Same_Month 
from Date_Table;
开始日期 结束日期 同月
2022-02-28 2022-02-28 是的
2022-02-28 2022-03-01 没有
2022-03-01 2022-03-02 是的
2022-03-01 2022-04-01 没有

在 DB Fiddle 上查看


0
投票

日期(DATE_TRUNC(开始日期,月份)

© www.soinside.com 2019 - 2024. All rights reserved.