对本机函数“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)
表示为从一个日期到另一个日期的天数。expr1
和expr2
是日期或日期和时间表达式。只有日期部分 这些值用于计算。
【讨论】:
以上是关于对本机函数“DATEDIFF”的调用中的参数计数不正确的主要内容,如果未能解决你的问题,请参考以下文章