如何在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
相关产品推荐
相关产品推荐

