DB2中如何修改datetime字段内的时间戳且保留原日期不变
单独修改datetime属性时间部分的实现方案
根据不同的使用场景,可直接用对应内置方法实现,无需手动拼接字符串转换,不会改动原有日期部分:
Python原生datetime对象处理
直接调用datetime实例内置的replace()方法即可,该方法不会修改原对象,会返回修改后的新实例,仅需传入需要调整的时间部分参数,未传入的年/月/日/时间参数会保留原值,示例代码:from datetime import datetime # 原始存储值 old_dt = datetime(2002, 10, 18, 0, 0, 0, 0) # 仅将时间调整为08:00:00.0,日期部分保持不变 new_dt = old_dt.replace(hour=8, minute=0, second=0, microsecond=0) print(new_dt) # 输出结果:2002-10-18 08:00:00注意:不要尝试通过字符串截取拼接的方式修改,容易出现格式兼容问题,
replace()是官方提供的原生时间修改方法,稳定性最高。数据库表datetime字段直接修改(以MySQL为例)
如果需要直接修改库表中存储的changedate字段值,可以用内置日期函数提取原日期部分再拼接目标时间,不会改动年月日取值,示例SQL:UPDATE 目标表名 SET changedate = DATE_ADD(DATE(changedate), INTERVAL 8 HOUR) WHERE 匹配需要修改的记录条件;若需要设置为非整点时间,直接调整INTERVAL参数即可,例如要设置为8点30分,可写为
INTERVAL '08:30:00' HOUR_SECOND。其中DATE(changedate)会先提取原字段的纯日期部分,从根源上避免日期被改动。Pandas DataFrame中的datetime列处理
如果是处理表格数据中的datetime类型列,可结合apply调用replace()方法批量修改:import pandas as pd # 假设df为已加载的数据表,changedate列已转换为datetime类型 df['changedate'] = df['changedate'].apply(lambda x: x.replace(hour=8, minute=0, second=0, microsecond=0))
内容的提问来源于stack exchange,提问作者max092012
相关产品推荐
相关产品推荐

