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

how to check if date is within the same month as date in another column SQL BQ

我的 BQ 中有两个日期字段 table。一个是 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

提前致谢!

我建议使用 'extract' 来完成这项任务。请看下面。

架构 (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;
start_date end_date Same_Month
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

View on DB Fiddle

日期(DATE_TRUNC(start_date, 月份)