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

如何在MySQL中将欧式日期转换为时间戳?求批量更新SQL语句

将欧式日期转换为MySQL时间戳的方法

当然可以搞定这个需求!MySQL自带的函数就能帮你把DD.MM.YY格式的欧式日期字符串转成时间戳,下面给你一步步的解决方案:

核心思路

首先用STR_TO_DATE()函数把varchar类型的欧式日期解析成MySQL能识别的日期格式,再用UNIX_TIMESTAMP()把这个日期转换成对应的时间戳值。

具体操作

情况1:新增一个时间戳列(推荐,保留原数据)

如果不想覆盖原来的日期数据,最好新增一个专门存储时间戳的列:

-- 1. 新增INT类型的列(无符号,避免负数问题)
ALTER TABLE your_table ADD COLUMN timestamp_col INT UNSIGNED;

-- 2. 批量转换并更新数据
UPDATE your_table 
SET timestamp_col = UNIX_TIMESTAMP(STR_TO_DATE(date_column, '%d.%m.%y'));

情况2:直接替换原varchar列(需谨慎,建议先备份)

如果你确定要把原varchar列改成时间戳存储,可以这么做:

-- 1. 先将所有日期字符串转换为时间戳值
UPDATE your_table 
SET date_column = UNIX_TIMESTAMP(STR_TO_DATE(date_column, '%d.%m.%y'));

-- 2. 修改列类型为无符号整数
ALTER TABLE your_table MODIFY COLUMN date_column INT UNSIGNED;

注意事项

  • 格式符匹配:如果你的日期是四位年份(比如01.12.2015),记得把格式符改成%d.%m.%Y(大写Y)。
  • 校验无效数据:有些格式错误的日期字符串会导致转换失败(返回NULL),可以先排查这些行:
SELECT date_column FROM your_table WHERE STR_TO_DATE(date_column, '%d.%m.%y') IS NULL;
  • 时间戳范围:INT UNSIGNED类型的时间戳可以支持到2106年,足够大部分场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:30:45