从日期字符串计算上个月和下个月
Calculate previous and next months from date string
我正在尝试查找 3 年内 select 个月前后的平均销售额。
有两列,MONTH
和 SELECTED_MONTH
。这两个都采用相同的格式,即字符串(例如 201103
)。我需要 select SELECTED_MONTH
中的特定月份,并在 MONTH
中获取该月的上个月和下个月。
例如:我在SELECTED_MONTH
中有201103
。我需要使用该值获取 MONTH
中的前一个月和下个月,因此 201102
和 201104
.
如有任何帮助,我们将不胜感激。我尝试了不同的方法,但都行不通。我使用 HIVE,但即使在 SQL 中查询也会有所帮助。
MySQL 提供了强大但略显笨拙的日期算术函数。函数 STR_TO_DATE()
and DATE_FORMAT()
允许将以文本字符串表示的日期转换为 DBMS 的内部 DATE
和 DATETIME
格式。
如果您碰巧在 SQL table 中有一个名为 month
的文本列,其文本日期格式为 201503
( YYYYmm
), 你可以使用 MySQL 日期算法来做你想做的事情。
STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d')
生成所提及月份第一天的 DATE。
LAST_DAY(STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d'))
生成 month
最后一天的日期。
STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d') - INTERVAL 1 MONTH
产生上个月第一天的 DATE。
STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d') + INTERVAL 1 MONTH
产生下个月第一天的 DATE。
更进一步,您可以获得上一季度第一天的 YYYYmm
格式。
DATE_FORMAT(STR_TO_DATE(CONCAT('201505','01'),'%Y%m%d') - INTERVAL 1 QUARTER, '%Y%m')
在文本字符串日期和内部日期之间进行转换的麻烦事驱使大多数数据库设计者将日期值存储在具有 DATE
数据类型的内部列中。
我正在尝试查找 3 年内 select 个月前后的平均销售额。
有两列,MONTH
和 SELECTED_MONTH
。这两个都采用相同的格式,即字符串(例如 201103
)。我需要 select SELECTED_MONTH
中的特定月份,并在 MONTH
中获取该月的上个月和下个月。
例如:我在SELECTED_MONTH
中有201103
。我需要使用该值获取 MONTH
中的前一个月和下个月,因此 201102
和 201104
.
如有任何帮助,我们将不胜感激。我尝试了不同的方法,但都行不通。我使用 HIVE,但即使在 SQL 中查询也会有所帮助。
MySQL 提供了强大但略显笨拙的日期算术函数。函数 STR_TO_DATE()
and DATE_FORMAT()
允许将以文本字符串表示的日期转换为 DBMS 的内部 DATE
和 DATETIME
格式。
如果您碰巧在 SQL table 中有一个名为 month
的文本列,其文本日期格式为 201503
( YYYYmm
), 你可以使用 MySQL 日期算法来做你想做的事情。
STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d')
生成所提及月份第一天的 DATE。
LAST_DAY(STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d'))
生成 month
最后一天的日期。
STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d') - INTERVAL 1 MONTH
产生上个月第一天的 DATE。
STR_TO_DATE(CONCAT(month,'01'),'%Y%m%d') + INTERVAL 1 MONTH
产生下个月第一天的 DATE。
更进一步,您可以获得上一季度第一天的 YYYYmm
格式。
DATE_FORMAT(STR_TO_DATE(CONCAT('201505','01'),'%Y%m%d') - INTERVAL 1 QUARTER, '%Y%m')
在文本字符串日期和内部日期之间进行转换的麻烦事驱使大多数数据库设计者将日期值存储在具有 DATE
数据类型的内部列中。