timestampdiff() 参数错误
timestampdiff() parameters error
我在 sql fiddle 上使用 mysql 版本 5.6,我正在尝试使用 timestampdiff() 函数找出第一列中的最小值之间的差异table 命名任务中第二个中的最大值如下
select TimeStampDiff(month, , max(Task.End_Date), min(Task.Start_Date));
但是当我 运行 这段代码时,我得到以下错误:
您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的 'months(max(End_Date)), months(min(Start_Date)))' 附近使用的正确语法
是不是timestampdiff() 不接受聚合函数作为参数?我该如何解决这个问题?
这是我的 complete fiddle
尝试:
mysql> DROP TABLE IF EXISTS `Task`;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> CREATE TABLE IF NOT EXISTS `Task` (
-> `ID` INT NOT NULL,
-> `Pro_ID` INT NOT NULL,
-> `Start_Date` DATE,
-> `End_Date` DATE,
-> `Description` VARCHAR(255),
-> PRIMARY KEY (`ID`)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO `Task` VALUES
-> (1, 1, '2017-01-01', '2017-02-01', "no-Description-yet"),
-> (2, 1, '2017-01-01', '2017-02-01', "no-Description-yet"),
-> (3, 1, '2017-01-01', '2017-06-01', "no-Description-yet"),
-> (4, 2, '2017-01-01', '2017-03-01', "no-Description-yet"),
-> (5, 3, '2017-01-01', '2017-02-01', "no-Description-yet"),
-> (6, 4, '2017-01-01', '2017-03-01', "no-Description-yet");
Query OK, 6 rows affected (0.02 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT
-> `Pro_ID`,
-> TIMESTAMPDIFF(MONTH, MIN(`Start_Date`), MAX(`End_Date`)) `MONTH_DIFF`
-> FROM `Task`
-> GROUP BY `Pro_ID`;
+--------+------------+
| Pro_ID | MONTH_DIFF |
+--------+------------+
| 1 | 5 |
| 2 | 2 |
| 3 | 1 |
| 4 | 2 |
+--------+------------+
4 rows in set (0.00 sec)
例子db-fiddle.
我在 sql fiddle 上使用 mysql 版本 5.6,我正在尝试使用 timestampdiff() 函数找出第一列中的最小值之间的差异table 命名任务中第二个中的最大值如下
select TimeStampDiff(month, , max(Task.End_Date), min(Task.Start_Date));
但是当我 运行 这段代码时,我得到以下错误:
您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的 'months(max(End_Date)), months(min(Start_Date)))' 附近使用的正确语法
是不是timestampdiff() 不接受聚合函数作为参数?我该如何解决这个问题?
这是我的 complete fiddle
尝试:
mysql> DROP TABLE IF EXISTS `Task`;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> CREATE TABLE IF NOT EXISTS `Task` (
-> `ID` INT NOT NULL,
-> `Pro_ID` INT NOT NULL,
-> `Start_Date` DATE,
-> `End_Date` DATE,
-> `Description` VARCHAR(255),
-> PRIMARY KEY (`ID`)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO `Task` VALUES
-> (1, 1, '2017-01-01', '2017-02-01', "no-Description-yet"),
-> (2, 1, '2017-01-01', '2017-02-01', "no-Description-yet"),
-> (3, 1, '2017-01-01', '2017-06-01', "no-Description-yet"),
-> (4, 2, '2017-01-01', '2017-03-01', "no-Description-yet"),
-> (5, 3, '2017-01-01', '2017-02-01', "no-Description-yet"),
-> (6, 4, '2017-01-01', '2017-03-01', "no-Description-yet");
Query OK, 6 rows affected (0.02 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT
-> `Pro_ID`,
-> TIMESTAMPDIFF(MONTH, MIN(`Start_Date`), MAX(`End_Date`)) `MONTH_DIFF`
-> FROM `Task`
-> GROUP BY `Pro_ID`;
+--------+------------+
| Pro_ID | MONTH_DIFF |
+--------+------------+
| 1 | 5 |
| 2 | 2 |
| 3 | 1 |
| 4 | 2 |
+--------+------------+
4 rows in set (0.00 sec)
例子db-fiddle.