根据日期字符串计算上个月和下个月



我正试图找到3年内选定月份前后的销售平均值。

共有两列,MONTHSELECTED_MONTH。两者的格式相同,即字符串(例如201103)。我需要在SELECTED_MONTH中选择特定的月份,并在MONTH中获得该月份的上个月和下个月。

例如:我在SELECTED_MONTH中有201103。我需要使用该值在MONTH中获得上个月和下个月,因此201102201104

如有任何帮助,我们将不胜感激。我尝试了不同的方法,但都不起作用。我使用HIVE,但即使是SQL中的查询也会有所帮助。

MySQL提供了强大但略显笨拙的日期算术函数。函数STR_TO_DATE()DATE_FORMAT()允许从表示为文本字符串的日期转换为DBMS的内部DATEDATETIME格式。

如果您的SQL表中恰好有一个名为month的文本列,其文本日期的形式为201503YYYYmm),则可以使用MySQL日期运算来执行您想要的操作。

STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d') 

生成所述月份的第一天的日期。

LAST_DAY(STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d')) 

产生CCD_ 18的最后一天的日期。

STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d') - INTERVAL 1 MONTH

产生上个月的第一天的日期。

STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d') + INTERVAL 1 MONTH

生成下个月的第一天的日期。

再进一步,您可以获得上一季度第一天的YYYYmm格式,如下所示。

DATE_FORMAT(STR_TO_DATE(CONCAT('201505','01'),'%Y%m%d') - INTERVAL 1 QUARTER, '%Y%m')

在文本字符串日期和内部日期之间转换的猴子式业务促使大多数数据库设计人员在具有DATE数据类型的列内部存储日期值。

相关内容

  • 没有找到相关文章

最新更新