调用本机函数'DATEDIFF'时参数计数不正确

时间:2014-04-23 16:46:12

标签: sql mariadb

我从这一行得到错误

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

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

我需要将其转换为其他格式吗?如果是这样的话?

使用MariaDB

3 个答案:

答案 0 :(得分:10)

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

  

<强>语法

     

DATEDIFF(expr1,expr2)

     

<强>描述

     

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

答案 1 :(得分:6)

@alex_b在DATEDIFF&amp; amp;的语法之间混淆是一种非常常见的观察。 TIMESTAMPDIFF函数。 关注link肯定有助于DATEDIFF&amp;的语法。 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用作&#39; argument1&#39;
  • 使用现有的varchar列作为&#39; argument2&#39;
  • 使用SET命令更新列

SET output_date = DATEDIFF(CURDATE(),input_date), ... 以上为我工作。祝你好运!

答案 2 :(得分:0)

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))