我尝试在phpMyAdmin中的MySQL上定义我自己的FUNCTION
:
BEGIN
DECLARE output VARCHAR
DECLARE temp DATETIME
SET temp = DATEDIFF(NOW(), added)
CASE temp
WHEN 0 SET output = 'today'
WHEN 1 SET output = 'yesterday'
ELSE SET output = CONCAT(temp, ' days ago')
RETURN output
END
错误如下所示:
数据查询错误:"创建函数DAYSPASSED
(date
DATETIME)返回VARCHAR(255)不确定修改SQL数据SQL安全定义符开始声明输出VARCHAR声明临时日期时间设置临时= DATEDIFF(NOW(),已添加)情况临时当0时设置输出='今天'当1时设置输出='昨天'否则设置输出= CONCAT(临时,'几天前')返回输出结束"
MySQL返回地址:#1064-SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,了解在第3行"DECLARE temp DATETIME SET temp = DATEDIFF(NOW(),added)CASE temp WHEN 0 SET"附近使用的正确语法
然而,我看不出它有什么问题。
2条答案
按热度按时间ha5z0ras1#
你缺少了一些分号,一个varchar的长度说明符,并且在case语法中有一些错误。
要测试的SQLfiddle。
u59ebvdq2#
答案应该是:
请注意以下更改:
;
终止output
需要有一个DEFAULT ''
值。CASE
的语法为CASE ... WHEN ... THEN ... END CASE
编辑:
temp
应该是一个INT
。