猿问

Java Spring MySQL String Timezone 列在两毫秒之间

我在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 可以自动格式化两个日期和字符串列来执行之间,但它看起来没有。


任何帮助将不胜感激。问候。


精慕HU
浏览 141回答 2
2回答

拉丁的传说

在您的本机查询中,您需要将 varchar 列的值显式转换为正确的日期/时间戳,以便由 between 运算符进行评估。这是您的本机查询应如下所示:SELECT * FROM activity_entity WHERE STR_TO_DATE(start_date, '%Y-%c-%eT%H:%i:%s.%fZ') BETWEEN :since AND :too
随时随地看视频慕课网APP

相关分类

Java
我要回答