对本机函数“DATEDIFF”的调用中的参数计数不正确

Posted

技术标签:

【中文标题】对本机函数“DATEDIFF”的调用中的参数计数不正确【英文标题】:Incorrect parameter count in the call to native function '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。 【参考方案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 是日期或日期和时间表达式。只有日期部分 这些值用于计算。

【讨论】:

以上是关于对本机函数“DATEDIFF”的调用中的参数计数不正确的主要内容,如果未能解决你的问题,请参考以下文章

在本机 safari 应用程序扩展中,我们如何使用 swift 的参数调用 javascript 函数?

sql数据库中的datediff函数是啥意思

oracle when 和 then怎么用!!!

关于vb 中的日期时间函数

Mysql中的解码字段

从本机 c 代码 (JNI) 为 Java 中的回调函数传递多个参数