JPA sql 中将 字符串(“2026-07-17 00:18:59”)转成Date

发布时间:2026/7/23 13:38:27
JPA sql 中将 字符串(“2026-07-17 00:18:59”)转成Date 在 SQL 中将2026-07-17 00:18:59这种格式的字符串转换为DATE只保留年月日丢弃时分秒或DATETIME保留完整时间有以下几种方法一、MySQL 中的转换1. 转为DATE只保留年月日sqlSELECT DATE(2026-07-17 00:18:59) AS result; -- 结果: 2026-07-17 SELECT CAST(2026-07-17 00:18:59 AS DATE) AS result; -- 结果: 2026-07-17 SELECT STR_TO_DATE(2026-07-17 00:18:59, %Y-%m-%d %H:%i:%s) AS result; -- 结果: 2026-07-172. 转为DATETIME保留完整时间sqlSELECT STR_TO_DATE(2026-07-17 00:18:59, %Y-%m-%d %H:%i:%s) AS result; -- 结果: 2026-07-17 00:18:593. 转为TIMESTAMPsqlSELECT TIMESTAMP(2026-07-17 00:18:59) AS result; -- 结果: 2026-07-17 00:18:59二、SQL Server 中的转换sqlSELECT CONVERT(DATE, 2026-07-17 00:18:59, 120) AS result; -- 结果: 2026-07-17 SELECT CONVERT(DATETIME, 2026-07-17 00:18:59, 120) AS result; -- 结果: 2026-07-17 00:18:59 SELECT CAST(2026-07-17 00:18:59 AS DATETIME) AS result;格式码120对应yyyy-mm-dd hh:mi:ss(24h)适用于你的字符串格式。三、Oracle 中的转换sqlSELECT TO_DATE(2026-07-17 00:18:59, YYYY-MM-DD HH24:MI:SS) AS result FROM dual; -- 结果: 2026-07-17 00:18:59Oracle 的DATE类型本身就包含时间部分。四、PostgreSQL 中的转换sqlSELECT 2026-07-17 00:18:59::DATE AS result; -- 结果: 2026-07-17 SELECT 2026-07-17 00:18:59::TIMESTAMP AS result; -- 结果: 2026-07-17 00:18:59五、在你的场景中MySQL JPA 接口投影如果你需要在 SQL 中将字符串转为DATE然后在 JPA 接口投影中返回Date类型SQL 写法sqlSELECT vin, DATE(time) AS time, -- 转为 DATE丢弃时分秒 field FROM your_table或保留完整时间sqlSELECT vin, STR_TO_DATE(time, %Y-%m-%d %H:%i:%s) AS time, field FROM your_tableVO 接口定义javapublic interface DrivingRecordVO { String getVin(); Date getTime(); // 对应 SQL 中的 time 列 String getField(); }六、常用格式符对照表MySQL STR_TO_DATE格式符含义示例%Y四位年份2026%m两位月份07%d两位日期17%H24小时制小时00%i分钟18%s秒59你的字符串格式2026-07-17 00:18:59对应格式sqlSTR_TO_DATE(2026-07-17 00:18:59, %Y-%m-%d %H:%i:%s)七、总结数据库转 DATE转 DATETIME/TIMESTAMPMySQLDATE(str)或CAST(str AS DATE)STR_TO_DATE(str, %Y-%m-%d %H:%i:%s)SQL ServerCONVERT(DATE, str, 120)CONVERT(DATETIME, str, 120)OracleTO_DATE(str, YYYY-MM-DD HH24:MI:SS)同上DATE 已包含时间PostgreSQLstr::DATEstr::TIMESTAMP如果你的数据库是MySQL直接使用sqlSELECT STR_TO_DATE(2026-07-17 00:18:59, %Y-%m-%d %H:%i:%s) AS result;这个写法既支持转为DATE会自动截断时间也支持转为DATETIME保留完整时间。在你的 JPA 接口投影中直接映射为Date类型即可。