DECLARE 在此位置无效,需要 EOF、ALTER、

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

我是 SQL 新手 我正在尝试这项作业,想要计算大流行的总持续时间(以月为单位),为此我使用了 DECLARE,但它显示错误位置不正确,这里有什么问题? 我正在使用 MySQL Workbench

SELECT *
FROM corona_analysis.corona_dataset
WHERE Province is null
OR Country is null
OR Latitude is null
OR Longitude is null
OR Date is null
OR Confirmed is null
OR Deaths is null
OR Recovered is null;


SELECT COUNT(*) total_rows
FROM corona_analysis.corona_dataset;

SELECT MIN(Date) AS start_date,
       MAX(Date) AS end_date
FROM corona_analysis.corona_dataset;


DECLARE @start_date DATE='2020-01-22',
DECLARE @end_date DATE='2021-06-13';
SELECT (DATEDIFF(MONTH, @start_date, @end_date)) AS number_of_months;

我该如何纠正这个问题?

mysql mysql-workbench
1个回答
0
投票

在 MySQL 中,DECLARE 语句在存储过程、函数或代码块中使用。它不能像您在查询中尝试的那样直接在标准 SQL 脚本中使用。相反,您可以以不同的方式使用变量,或者直接在 DATEDIFF 计算中使用日期。

不使用 DECLARE 你可以这样做。

SELECT MIN(Date) AS start_date,
       MAX(Date) AS end_date
INTO @start_date, @end_date
FROM corona_analysis.corona_dataset;

SELECT TIMESTAMPDIFF(MONTH, @start_date, @end_date) AS number_of_months;

或者您可以直接使用以下查询。

SELECT TIMESTAMPDIFF(MONTH, MIN(Date), MAX(Date) ) AS number_of_months FROM corona_analysis.corona_dataset;
© www.soinside.com 2019 - 2024. All rights reserved.