我的 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
先感謝您!
uj5u.com熱心網友回復:
我建議使用“提取”來完成這項任務。請看下文。
架構 (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 上查看
uj5u.com熱心網友回復:
日期(DATE_TRUNC(開始日期,月)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/457184.html
下一篇:將日期傳遞給服務器時時區更改
