我在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/