如何创建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。