You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何插入'17-DEC-80'格式日期并获取对应月份最后一天?

嘿,这个问题我太熟悉了!咱们拆成几个部分一步步解决:

1. 插入格式为'17-DEC-80'的日期到MySQL

MySQL的DATE类型存储的是YYYY-MM-DD格式的数据,但你可以通过STR_TO_DATE()函数把'17-DEC-80'这种字符串格式转换为合法的日期值再插入。

这个函数的格式符对应规则:

  • %d:两位数字的日期(01-31)
  • %b:缩写的月份名称(Jan、Feb...Dec,大小写不敏感)
  • %y:两位数字的年份(70-99会被解析为1970-1999,00-69解析为2000-2069)

示例插入语句(假设你有一个名为user_dates的表,有event_date字段):

INSERT INTO user_dates (event_date)
VALUES (STR_TO_DATE('17-DEC-80', '%d-%b-%y'));
2. 获取日期对应月份的最后一天

MySQL内置了LAST_DAY()函数,它可以直接接收日期值或日期字符串,返回该月份的最后一天。

比如针对刚才的日期,获取月末的语句:

SELECT LAST_DAY(STR_TO_DATE('17-DEC-80', '%d-%b-%y')) AS month_end;

执行后会返回1980-12-31,如果需要转成和输入一样的格式,可以搭配DATE_FORMAT():

SELECT DATE_FORMAT(LAST_DAY(STR_TO_DATE('17-DEC-80', '%d-%b-%y')), '%d-%b-%y') AS month_end_formatted;

这样就会得到31-DEC-80。

3. 插入10条示例数据并批量查询月末日期

先创建一个测试表(如果没有的话):

CREATE TABLE IF NOT EXISTS sample_dates (
    id INT AUTO_INCREMENT PRIMARY KEY,
    source_date DATE NOT NULL
);

然后插入10条指定格式的日期数据:

INSERT INTO sample_dates (source_date)
VALUES
    (STR_TO_DATE('01-JAN-81', '%d-%b-%y')),
    (STR_TO_DATE('10-FEB-82', '%d-%b-%y')),
    (STR_TO_DATE('15-MAR-83', '%d-%b-%y')),
    (STR_TO_DATE('20-APR-84', '%d-%b-%y')),
    (STR_TO_DATE('25-MAY-85', '%d-%b-%y')),
    (STR_TO_DATE('02-JUN-86', '%d-%b-%y')),
    (STR_TO_DATE('07-JUL-87', '%d-%b-%y')),
    (STR_TO_DATE('12-AUG-88', '%d-%b-%y')),
    (STR_TO_DATE('17-SEP-89', '%d-%b-%y')),
    (STR_TO_DATE('22-OCT-90', '%d-%b-%y'));

最后执行查询,同时展示原始格式日期和对应月末日期:

SELECT
    DATE_FORMAT(source_date, '%d-%b-%y') AS input_date,
    LAST_DAY(source_date) AS month_end_date,
    DATE_FORMAT(LAST_DAY(source_date), '%d-%b-%y') AS month_end_formatted
FROM sample_dates;

小提示

  • 如果你担心两位年份的解析问题(比如不想把80当成1980),可以改用%Y格式符传入四位年份,比如STR_TO_DATE('17-DEC-1980', '%d-%b-%Y')。
  • 尽量用STR_TO_DATE()明确转换格式,不要依赖MySQL的自动转换,避免因系统日期格式设置不同导致的错误。

内容的提问来源于stack exchange,提问作者Jack Sengar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:12:54