【问题标题】:Get all month from colums sql in java从java中的sql列获取所有月份
【发布时间】:2026-01-28 09:25:01
【问题描述】:

我有表“TableHome”,数据库“DatabaseHome.db”中的列名“Date”包含这样的数据

5 January 2021
6 October 2021
10 December 2021

我想取每一年的月份名称来生成每月统计,我应该在sql中使用什么语法?以及如何将这些数据转换为java中的arraylist而没有重复项?

【问题讨论】:

  • 你的数据库没有date 数据类型吗?使用它!
  • 您真的将日期存储为文本吗?您的列的数据类型到底是什么?
  • 我的数据类型是TEXT,虽然有点复杂,但我找到了一个解决方案,但是如果有更简单的sql语法会很有帮助,因为我是使用mysql的新手

标签: java mysql sql android-studio


【解决方案1】:

要将上述日期转换为月份 int 值,请使用

SELECT month(str_to_date('10 December 2021', '%d %M %Y')) as month;

要总结一个月,您需要求和(或根据您的需要计算)并按第一列分组,

类似

SELECT month(str_to_date(dateCol, '%d %M %Y')) as month, 
                         sum(someOtherCol) from mytable group by 1;

【讨论】:

  • 这仅适用于英文月份名称吗?
  • %M 当前语言环境中的完整月份名称(变量 lc_time_names)。参考mariadb.com/kb/en/str_to_date
  • 我尝试在印尼语中使用月份名称,但它返回 null
  • 检查变量SELECT @@lc_time_names; 你的数据库设置为印尼语吗?
  • 在 en-Us 中呵呵。能说说怎么改吗?我是否还必须在我的 mysql java 中更改它?
【解决方案2】:

您应该尝试使用MONTHNAME(DATE) 来获取字符串中的月份和DISTINCT 来删除重复项

select distinct(monthname(str_to_date(col1, '%d %M %y'))) as month
from table1

dbfiddle here

【讨论】:

    最近更新 更多