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

alb*_*lbo 13 sql mariadb

我从这一行得到了错误

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

我的列中的日期格式为md-yy

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

使用MariaDB

D S*_*ley 15

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

句法

DATEDIFF(expr1,expr2)

描述

DATEDIFF()退货(expr1 – expr2) 表示为从一个日期到另一个日期的天数值.expr1并且 expr2是日期或日期和时间表达式.在计算中仅使用值的日期部分.


nit*_*708 7

@alex_b在DATEDIFF和TIMESTAMPDIFF函数的语法之间混淆是一种非常常见的观察.以下链接肯定有助于DATEDIFF的语法, 此页面将列出MariaDB的父MySQL中可用的所有其他日期相关功能.

参考以下链接是一个总结 -

TIMEDIFF(expr1,expr2)
expr1 - '2000:01:01 00:00:00'
expr2 - '2000:01:01 00:00:00.000001'
Run Code Online (Sandbox Code Playgroud)

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

DATEDIFF(expr1,expr2)
expr1 - '2007-12-31 23:59:59'
expr2 - '2007-12-30'
Run Code Online (Sandbox Code Playgroud)

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

以下是我用它的场景 -

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

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