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

如何将日期部分重置为当月首日并保留原有时间?

如何将日期时间重置为当月首日并保留时间?

当然能搞定这个需求!下面我针对几种常用的场景,给你具体的实现方案,你按需取用就行:

Python 实现

用Python的datetime模块就能轻松实现,思路很直接:解析日期字符串后,把「日」替换成1,再转回字符串格式。

from datetime import datetime

def reset_to_month_first_day(dt_str):
    # 把字符串转成datetime对象
    original_dt = datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
    # 替换日为1,保留时分秒
    month_start_dt = original_dt.replace(day=1)
    # 转回指定格式的字符串
    return month_start_dt.strftime("%Y-%m-%d %H:%M:%S")

# 测试你的示例
print(reset_to_month_first_day("2018-01-02 23:00:00"))  # 输出: 2018-01-01 23:00:00
print(reset_to_month_first_day("2018-04-04 10:00:00"))  # 输出: 2018-04-01 10:00:00

SQL 实现(以MySQL为例)

如果是在数据库里处理这类数据,可以通过拼接日期部分和时间部分来实现:

-- 假设你的日期时间字段名为`datetime_col`,表名为`your_table`
SELECT 
  CONCAT(DATE_FORMAT(datetime_col, '%Y-%m-01'), ' ', TIME(datetime_col)) AS month_start_datetime
FROM your_table;

原理是:先用DATE_FORMAT提取年份和月份,拼接上-01得到当月首日的日期部分,再用TIME()提取原字段的时间部分,最后把两者拼接起来就是目标结果。

Excel 实现

要是用Excel处理,公式也很简单,有两种写法:

  1. 拆分日期和时间再组合:
=DATE(YEAR(A1), MONTH(A1), 1) + TIME(HOUR(A1), MINUTE(A1), SECOND(A1))
  1. 更简洁的写法(利用Excel日期的数值特性):
=EOMONTH(A1, -1) + 1 + MOD(A1, 1)

解释一下:EOMONTH(A1, -1)会得到上月最后一天,加1就是当月首日;MOD(A1,1)会提取出A1单元格里的时间部分(因为Excel中日期是整数,时间是小数),两者相加就得到了保留时间的当月首日日期。

如果你是用其他工具或编程语言,随时告诉我,我再给你补充对应的实现方法~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:32:46