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

如何将MM/DD/YYYY HH:MM格式的CHAR转换为可用Date类型?

解决MM/DD/YYYY HH:MM格式字符串转Date类型的问题

以下是不同主流SQL数据库的可行转换方案,针对你的示例值11/04/2021 12:00测试有效:

SQL Server

你提到用CONVERT/CAST未果,核心是要指定匹配格式的style参数(CAST不支持style,需用CONVERT):

-- 直接转换为DATE类型,自动忽略时间部分
SELECT CONVERT(DATE, '11/04/2021 12:00', 101) AS ConvertedDate;

-- 处理可能存在的无效格式值,避免报错返回NULL
SELECT TRY_CONVERT(DATE, 你的列名, 101) AS ConvertedDate;

说明:style=101对应MM/DD/YYYY格式,转换时会自动截断时间部分提取日期。

MySQL

使用STR_TO_DATE函数指定格式匹配字符串,再转DATE类型:

-- 先解析为datetime再转date
SELECT CAST(STR_TO_DATE('11/04/2021 12:00', '%m/%d/%Y %H:%i') AS DATE) AS ConvertedDate;

-- 直接提取日期(STR_TO_DATE返回datetime,MySQL会隐式转换为date)
SELECT STR_TO_DATE('11/04/2021 12:00', '%m/%d/%Y %H:%i') AS ConvertedDate;

PostgreSQL

通过TO_DATE函数指定格式模板完成转换:

SELECT TO_DATE('11/04/2021 12:00', 'MM/DD/YYYY HH24:MI') AS ConvertedDate;

-- 或者先转时间戳再转date
SELECT CAST(TO_TIMESTAMP('11/04/2021 12:00', 'MM/DD/YYYY HH24:MI') AS DATE) AS ConvertedDate;

注意事项

  • 如果你的列存在格式不规范的值(比如月份超过12、日期超过当月天数),转换会报错。可以用对应数据库的容错函数(如SQL Server的TRY_CONVERT、MySQL的STR_TO_DATE配合IFNULL)处理。
  • 若要永久将列改为DATE类型,确保转换验证通过后,执行ALTER TABLE修改列类型:
-- SQL Server示例
ALTER TABLE 你的表名 ALTER COLUMN 你的列名 DATE;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:15:49