【问题标题】:Use DATEDIFF function with mySQL在 mySQL 中使用 DATEDIFF 函数
【发布时间】:2018-03-17 17:40:42
【问题描述】:

只需尝试在我的以下查询中使用 SQL 中的 DATEDIFF 本机函数:

SELECT 
    KDX_Id, 
    (
        SELECT DATEDIFF('DAY', ___Bookings.BOO_DateCI, ___Bookings.BOO_DateCO)
        FROM ___Bookings
        WHERE KDX_Id = ___Bookings.BOO_ClientId
    ) AS nb_nights
FROM  ___Kardex

错误信息是:
#1582 - Incorrect parameter count in the call to native function 'DATEDIFF'

表结构为:
http://sqlfiddle.com/#!9/25399/2

我错过了什么?

谢谢。

【问题讨论】:

  • 请标记您的 MySQL 版本。
  • SELECT DATEDIFF(date1, date2); 看起来是这个函数的工作方式。
  • 错误是不言自明的
  • 您似乎对 SQL Server 的 DATEDIFF 函数很熟悉,该函数接受三个参数。 MySQL 的 DATEDIFF 只接受两个参数。摆脱'DAY',,你应该会很好。祝你好运。

标签: mysql datediff


【解决方案1】:

来自 MySQL 文档:

DATEDIFF() 返回 expr1 - expr2 表示为从一个日期到另一个日期的 days 值。 expr1 和 expr2 是日期或日期和时间表达式。计算中仅使用值的日期部分。

  • DATEDIFF(expr1,expr2)

用途:

SELECT DATEDIFF(___Bookings.BOO_DateCI, ___Bookings.BOO_DateCO)

【讨论】:

  • 我现在遇到了这个错误:Subquery returns more than 1 row。请参阅sqlfiddle.com/#!9/6d3c4c/1
  • @rony datediff 应该返回一条记录。 sqlfiddle.com/#!9/6d3c4c/12
  • 如果我需要对返回的所有 datediff 求和,我应该使用什么函数?
  • 我的意思是,你不能使用返回多于一行的标量子查询,否则你应该加入它
  • 我不能用这样的东西SUM(DISTINCT DATEDIFF(...)) ?
【解决方案2】:

试试这个:

SELECT 
    KDX_Id, 
    (
        SELECT DATEDIFF(___Bookings.BOO_DateCI, ___Bookings.BOO_DateCO)
        FROM ___Bookings
        WHERE KDX_Id = ___Bookings.BOO_ClientId
    ) AS nb_nights
FROM  ___Kardex

【讨论】:

    【解决方案3】:

    试试这个结构。

    从 my_table 中选择 DATEDIFF(date_1, date_2);

     /*In your script is */
    SELECT DATEDIFF(___Bookings.BOO_DateCI, ___Bookings.BOO_DateCO)
    FROM ___Bookings
    WHERE KDX_Id = ___Bookings.BOO_ClientId;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 2013-03-21
      • 1970-01-01
      相关资源
      最近更新 更多