我在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 2018Date 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 可以自动格式化两个日期和字符串列来执行之间,但它看起来没有。任何帮助将不胜感激。问候。
2 回答
![?](http://img1.sycdn.imooc.com/5458478b0001f01502200220-100-100.jpg)
拉丁的传说
TA贡献1789条经验 获得超8个赞
在您的本机查询中,您需要将 varchar 列的值显式转换为正确的日期/时间戳,以便由 between 运算符进行评估。这是您的本机查询应如下所示:
SELECT * FROM activity_entity WHERE STR_TO_DATE(start_date, '%Y-%c-%eT%H:%i:%s.%fZ') BETWEEN :since AND :too
添加回答
举报
0/150
提交
取消