JPA sql 中将 字符串(“2026-07-17 00:18:59”)转成Date
2026/7/23 13:38:18 网站建设 项目流程

在 SQL 中,将"2026-07-17 00:18:59"这种格式的字符串转换为DATE(只保留年月日,丢弃时分秒)或DATETIME(保留完整时间),有以下几种方法:


一、MySQL 中的转换

1. 转为DATE(只保留年月日)

sql

SELECT 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-17

2. 转为DATETIME(保留完整时间)

sql

SELECT STR_TO_DATE('2026-07-17 00:18:59', '%Y-%m-%d %H:%i:%s') AS result; -- 结果: 2026-07-17 00:18:59

3. 转为TIMESTAMP

sql

SELECT TIMESTAMP('2026-07-17 00:18:59') AS result; -- 结果: 2026-07-17 00:18:59

二、SQL Server 中的转换

sql

SELECT 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 中的转换

sql

SELECT TO_DATE('2026-07-17 00:18:59', 'YYYY-MM-DD HH24:MI:SS') AS result FROM dual; -- 结果: 2026-07-17 00:18:59

Oracle 的DATE类型本身就包含时间部分。


四、PostgreSQL 中的转换

sql

SELECT '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 写法

sql

SELECT vin, DATE(time) AS time, -- 转为 DATE(丢弃时分秒) field FROM your_table

或保留完整时间:

sql

SELECT vin, STR_TO_DATE(time, '%Y-%m-%d %H:%i:%s') AS time, field FROM your_table

VO 接口定义

java

public interface DrivingRecordVO { String getVin(); Date getTime(); // 对应 SQL 中的 time 列 String getField(); }

六、常用格式符对照表(MySQL STR_TO_DATE)

格式符含义示例
%Y四位年份2026
%m两位月份07
%d两位日期17
%H24小时制小时00
%i分钟18
%s59

你的字符串格式2026-07-17 00:18:59,对应格式:

sql

STR_TO_DATE('2026-07-17 00:18:59', '%Y-%m-%d %H:%i:%s')

七、总结

数据库转 DATE转 DATETIME/TIMESTAMP
MySQLDATE(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,直接使用:

sql

SELECT STR_TO_DATE('2026-07-17 00:18:59', '%Y-%m-%d %H:%i:%s') AS result;

这个写法既支持转为DATE(会自动截断时间),也支持转为DATETIME(保留完整时间)。在你的 JPA 接口投影中,直接映射为Date类型即可。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询