如何创建MySQL函数,通过处理现有的日期列来创建新的季度列?
我有一个列日期,如下所示:如何创建MySQL函数,通过处理现有的日期列来创建新的季度列?,mysql,function,Mysql,Function,我有一个列日期,如下所示: +-----------+ | Date | +-----------+ | 20140611 | | 20150119 | | 20150922 | | 20160310 | +-----------+ +-----------+-------------+ | Date | Quarter | +-----------+-------------+ | 20140611 | Q2-2014 | | 20150119
+-----------+
| Date |
+-----------+
| 20140611 |
| 20150119 |
| 20150922 |
| 20160310 |
+-----------+
+-----------+-------------+
| Date | Quarter |
+-----------+-------------+
| 20140611 | Q2-2014 |
| 20150119 | Q1-2015 |
| 20150922 | Q3-2015 |
| 20160310 | Q3-2016 |
+-----------+-------------+
它是一个YYYYMMDD
格式的字符串
我想创建一个名为Quarter
的新列,如下所示:
+-----------+
| Date |
+-----------+
| 20140611 |
| 20150119 |
| 20150922 |
| 20160310 |
+-----------+
+-----------+-------------+
| Date | Quarter |
+-----------+-------------+
| 20140611 | Q2-2014 |
| 20150119 | Q1-2015 |
| 20150922 | Q3-2015 |
| 20160310 | Q3-2016 |
+-----------+-------------+
其中季度
表示相应的日期
所在的季度
这只是一个示例,但我实际上想知道如何编写一个函数,该函数可以应用于表的单个列,以便在一些预定义的处理之后创建一个新列。使用四分之一函数
select `Date`, QUARTER(`date`) as Quarter
from my_table ;
否则,如果您正在寻找用户定义的函数,则可以使用
CREATE FUNCTION hello_world(my_text TEXT)
RETURNS TEXT
LANGUAGE SQL -- This element is optional and will be omitted from
BEGIN
RETURN CONCAT('Hello ', my_text);
END;
$$
DELIMITER ;
然后
返回地球你好
使用四分之一功能
select `Date`, QUARTER(`date`) as Quarter
from my_table ;
否则,如果您正在寻找用户定义的函数,则可以使用
CREATE FUNCTION hello_world(my_text TEXT)
RETURNS TEXT
LANGUAGE SQL -- This element is optional and will be omitted from
BEGIN
RETURN CONCAT('Hello ', my_text);
END;
$$
DELIMITER ;
然后
返回地球你好
这只是一个例子。非常感谢您的建议。我已经做了必要的修改。希望有帮助!这只是一个例子。非常感谢你的建议。我已经做了必要的修改。希望有帮助!哦,我没有意识到它有一个内置函数
QUARTER
。虽然我正在寻找一种编写函数的通用方法(以便将来我能够根据需要对其进行调整)。。希望我的回答有用谢谢@scaisEdge。您提供的链接非常有用,但不幸的是,在我的示例中,季度的定义不是标准的。实际上,我会考虑Min Dead在第一季度下降,并将继续计算其他日期的季度。@ Sangram考虑相应地修改您的问题,但是请注意,您通常不会存储派生数据。无论如何,我已经更新了答案,添加了create函数udf refOh,但我没有意识到它有一个内置函数QUARTER
。虽然我正在寻找一种编写函数的通用方法(以便将来我能够根据需要对其进行调整)。。希望我的回答有用谢谢@scaisEdge。您提供的链接非常有用,但不幸的是,在我的示例中,季度的定义不是标准的。实际上,我会考虑Min Dedate在第一季度下降,并将继续计算其他日期的季度。@ Sangram考虑相应地修改您的问题,但是请注意,您通常不会存储派生数据。无论如何,我已经更新了答案,添加了创建函数UDF REF。