【发布时间】:2011-01-17 14:04:18
【问题描述】:
(请参阅下面的答案以获取解决方案 - 感谢您的反馈)
这可能很明显,但我看不出我的 sql 有什么问题:
mysql> CREATE FUNCTION start_of_minute(
-> curdate DATE)
-> RETURNS DATE
-> DETERMINISTIC
-> SQL SECURITY INVOKER
-> BEGIN
-> DECLARE sofm DATE;
-> SET sofm = SUBDATE (
-> curdate,
-> INTERVAL SECOND(curdate) SECOND
-> );
-> RETURN sofm;
-> END //
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near ');
RETURN sofm;
END' at line 11
下面的作品更令人沮丧:
mysql> CREATE FUNCTION start_of_week(
-> curdate DATE,
-> first_day_of_week INTEGER)
-> RETURNS DATE
-> DETERMINISTIC
-> SQL SECURITY INVOKER
-> BEGIN
-> DECLARE sow DATE;
-> SET sow = SUBDATE(
-> curdate,
-> INTERVAL (WEEKDAY(curdate)+(7-first_day_of_week)%7) DAY
-> );
-> RETURN sow;
-> END //
Query OK, 0 rows affected (0.00 sec)
(注意可能还有其他方法可以在各个级别截断日期 - 我当然有兴趣了解它们,我真的很想知道我的语法有什么问题 - 不是计算开始的不同方法句号)。
是的,second() is a valid function 和 SECOND is a valid interval。
TIA
【问题讨论】:
-
您是要标记这个 DB2 吗?
-
是的 - mysql 应该与 DB2 的语法兼容(尽管两者都有一些不共同的特定功能)。使用过程式 mysql 的人还不多。
标签: sql mysql db2 stored-functions