基于datetime列更新id列(生成指定格式ID)的技术求助
嘿,这个需求我太熟了!给你几个不同场景下的实现方案,都是简单靠谱的:
方案1:用Pandas处理表格数据(最常用)
如果你的数据存在Pandas DataFrame里,而且datetime列已经是datetime类型,直接用dt.strftime格式化就行,一步到位:
import pandas as pd # 假设你的数据框是df,datetime列名为'datetime_col' df['id'] = df['datetime_col'].dt.strftime('%y%m%d%H%M%S')
要是你的datetime列还只是字符串类型,先转成datetime格式再处理更稳妥:
df['datetime_col'] = pd.to_datetime(df['datetime_col']) df['id'] = df['datetime_col'].dt.strftime('%y%m%d%H%M%S')
这里的%y代表两位年份(自动去掉开头的"20"),%m/%d是两位月/日,%H是24小时制的小时,%M/%S是两位分/秒,组合起来正好是你要的180225134445格式。
方案2:纯Python处理单个datetime对象/字符串
如果是单独处理某个时间值:
- 要是已经是
datetime对象:
from datetime import datetime dt_obj = datetime(2018, 2, 25, 13, 44, 45) id_str = dt_obj.strftime('%y%m%d%H%M%S') # 输出:'180225134445'
- 要是还是字符串格式的时间,也可以直接做字符串处理(不过更推荐先转成datetime对象避免格式错误):
time_str = '2018-02-25 13:44:45' id_str = time_str[2:].replace('-', '').replace(' ', '').replace(':', '') # 输出:'180225134445'
方案3:数据库中直接转换(SQL)
如果你的数据存在数据库里,直接用SQL函数就能生成目标id:
- MySQL/MariaDB:用
DATE_FORMAT函数,注意分钟用%i(MySQL里%m是月份):
SELECT DATE_FORMAT(datetime_col, '%y%m%d%H%i%s') AS id FROM your_table;
- PostgreSQL:用
TO_CHAR函数:
SELECT TO_CHAR(datetime_col, 'YYMMDDHH24MISS') AS id FROM your_table;
- SQL Server:用
FORMAT函数:
SELECT FORMAT(datetime_col, 'yyMMddHHmmss') AS id FROM your_table;
这些方法都能精准得到你要的id格式,根据你实际使用的工具选就行~
内容的提问来源于stack exchange,提问作者qadenza
相关产品推荐
相关产品推荐

