如何将数据库中字符串格式日期转换为Unix时间戳?
解决字符串日期转Unix时间戳的问题
嘿,我来帮你搞定这个转换问题!你的SQL语句里有两个关键问题导致无法正常工作,咱们一步步修正:
问题分析
- 字段名被当成字符串字面量:你给**
mydate**加了单引号,数据库会把它当成普通字符串'mydate'来解析,而不是读取表中mydate字段的值; - 格式串不匹配:你指定的
"yyyy-MM-dd HH:mm:ss.SSSS"和实际的日期格式'8/1/2015 12:35:22 PM'完全不符,数据库没法识别这个日期结构。
正确的转换语句
针对你的日期格式(月/日/年 12小时制时间 + AM/PM),我们需要用MySQL对应的格式符来匹配:
SELECT UNIX_TIMESTAMP(mydate, '%c/%e/%Y %h:%i:%s %p') AS new_date FROM your_table;
格式符说明
这里的格式串精准对应你的日期结构:
%c:1位或2位的月份(比如8或08)%e:1位或2位的日期(比如1或01)%Y:4位年份(比如2015)%h:12小时制的小时(01-12)%i:分钟(00-59)%s:秒(00-59)%p:AM或PM标识
额外说明
如果你的数据库版本支持自动识别部分格式,也可以简化成UNIX_TIMESTAMP(mydate),但指定明确的格式串会更可靠,避免因数据库配置差异导致的解析错误。另外,UNIX_TIMESTAMP本身返回的就是整数类型的时间戳,不需要额外用CAST转换。
内容的提问来源于stack exchange,提问作者jumpman8947
相关产品推荐
相关产品推荐

