Java Spring MySQL String 两毫秒之间的时区列

标签 java mysql between

我在MySQL 列上以字符串形式存储了时区日期,格式如下:

2018-07-23T20:54:37.242Z --> 开始日期

我想要做的是之间两毫秒(或日期),如下所示:

SELECT * FROM activity_entity WHERE start_date BETWEEN 1532322000000 AND 1532408399000 

否则,我使用 Java Spring Repository 作为后端,我在其中发送如下参数:

Date since = new Date(accessRepPOSTInDto.getSince()); //1532322000000 gives Mon Jul 23 00:00:00 CDT 2018
Date to = new Date(accessRepPOSTInDto.getTo());//1532408399000 gives Mon Jul 23 23:59:59 CDT 2018

@Query(value = "SELECT * FROM activity_entity WHERE start_date BETWEEN :since AND :too , nativeQuery = true)
ActivityEntity findBetweenDates(@Param("since") Date since, @Param("too") Date too);

这样做返回 null;

我认为 MySQL 可以自动格式化两个日期和字符串列来执行 Between,但看起来并没有。

任何帮助将非常感激。问候。

最佳答案

在 native 查询中,您需要将 varchar 列的值显式转换为正确的日期/时间戳,以便由 Between 运算符进行评估。您的 native 查询应如下所示:

SELECT * FROM activity_entity WHERE STR_TO_DATE(start_date, '%Y-%c-%eT%H:%i:%s.%fZ') BETWEEN :since AND :too

关于Java Spring MySQL String 两毫秒之间的时区列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51504794/

相关文章:

java - 不知道如何摆脱 NaN

java - 对本地存储库(gradle)中的依赖关系感到困惑

Mysql 组条目自动递增

mysql - mysql建表出现错误

php - 带时间戳的数据库,显示不同的月份

python - 计算列表中其他元素之间特定元素的数量

java - Java 中的同步

java - 从 BackStack (Flag_Activity_no_history) 中删除 Activity 不起作用

mysql - 指定为定义者的用户不存在

sql-server-2005 - SQL 左连接(条件之间)