【问题标题】:Incorrect parameter count in the call to native function 'DATEDIFF'对本机函数“DATEDIFF”的调用中的参数计数不正确
【发布时间】:2014-06-08 15:43:58
【问题描述】:

我从这一行得到错误

SELECT table.field
FROM table
WHERE table.month = 'october'
AND DATEDIFF(day, table.start_date, table.end_date) < 30

我的专栏中的日期格式为 m-d-yy

我需要将其转换为其他格式吗?如果有怎么办?

使用 MariaDB

【问题讨论】:

  • 这是 SQL-Server 吗?你的查询的其余部分是什么?这些列有什么数据类型?
  • 请显示完整的查询、完整的错误消息,并说明您正在使用哪个 RDBMS(MS SQL Server、MySQL、PostGreSQL 等)
  • 我需要将 d-m-yy 格式的日期转换为 unix 日期格式。我认为如果月份或日期只有一位数字,则需要正则表达式在数字前面放置一个 0。

标签: sql mariadb


【解决方案1】:

datediff 的 DATEDIFF 返回一个值,该值是两个日期之间的天数之差。所以 datediff(mydate1, mydate2) 将返回 X 天;其中 mydate1 应该大于 mydate2。我相信下面的 SQL 查询会帮助你达到你想要的结果。

SELECT table.field
FROM table
WHERE (table.month = 'october'
AND (datediff(table.end_date, table.start_date) < 30))

【讨论】:

    【解决方案2】:

    @alex_b 很常见的现象是混淆了 DATEDIFF 和 TIMESTAMPDIFF 函数的语法。 关注link 肯定会对 DATEDIFF & 的语法有所帮助 this page 将列出 MariaDB 的父 MySQL 中可用的所有其他与日期相关的函数。\

    参考下面上面的链接是一个摘要-

    TIMEDIFF(expr1,expr2)
    expr1 - '2000:01:01 00:00:00'
    expr2 - '2000:01:01 00:00:00.000001'
    

    TIMEDIFF() 返回 expr1 - expr2 表示为时间值。 expr1 和 expr2 是时间或日期和时间表达式,但两者都必须是 同类型。

    DATEDIFF(expr1,expr2)
    expr1 - '2007-12-31 23:59:59'
    expr2 - '2007-12-30'
    

    DATEDIFF() 返回 expr1 - expr2 表示为从一开始的天数 约会对方。 expr1 和 expr2 是日期或日期和时间 表达式。只有值的日期部分用于 计算。

    以下是我使用它的场景-

    • 将当前日期的 CURDATE 用作“argument1”
    • 使用现有的 varchar 列作为“argument2”
    • 使用 SET 命令更新列

    SET output_date = DATEDIFF(CURDATE(),input_date), ... 以上对我有用。祝你好运!

    【讨论】:

      【解决方案3】:

      根据 MariaDB DATEDIFF 的文档,只需要 两个 参数:

      语法

      DATEDIFF(expr1,expr2)

      说明

      DATEDIFF() 返回(expr1 – expr2) 表示为从一个日期到另一个日期的天数。 expr1expr2 是日期或日期和时间表达式。只有日期部分 这些值用于计算。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 2017-01-25
        • 2021-07-31
        • 1970-01-01
        • 2021-11-29
        • 2020-06-05
        相关资源
        最近更新 更多