sql中的date的使用

前提:查询的时间范围为传入的参数

原sql语句传参date(a.send_time) >= :startDate AND date(a.send_time) <= :endDate

private static String smsSql = "SELECT count(1) FROM (SELECT 
a.phone FROM cl_sms a LEFT JOIN cl_user b ON a.phone = b.login_name
 LEFT JOIN cl_user_base_info c ON b.id = c.user_id" +  " WHERE 
 date(a.send_time) >= :startDate AND date(a.send_time) <= :endDate 
 GROUP BY a.phone ) d";

调用的sql语句sDate,eDate为传入的时间范围

MapSqlParameterSource params = new MapSqlParameterSource();
    params.addValue("startDate", sDate);
    params.addValue("endDate", eDate);
List<Map<String, Object>>  list = firstJdbcTemplate.queryForList(sql,params);

不使用date时,传入的参数的时分秒被截取掉了2018-03-01 00:00:00--2018-04-01 00:00:00

SELECT count(1) FROM (SELECT a.phone FROM cl_sms a LEFT JOIN cl_user b
 ON a.phone = b.login_name LEFT JOIN cl_user_base_info c ON b.id = 
 c.user_id WHERE a.send_time >= '2018-03-01'AND 
 a.send_time <= '2018-04-01'AND  OR c.real_name NOT IN 
 ('A Sunu Widyatmoko','jarry','king' ) )GROUP BY a.phone) d;

不使用date时,传入时间参数带着时分秒2018-03-01 00:00:00--2018-04-01 23:59:59

SELECT count(1) FROM (SELECT a.phone FROM cl_sms a LEFT JOIN cl_user b
 ON a.phone = b.login_name LEFT JOIN cl_user_base_info c ON b.id = 
 c.user_id WHERE a.send_time >= '2018-03-01 00:00:00'AND 
 a.send_time <= '2018-04-01 23:59:59'AND  OR c.real_name NOT IN 
 ('A Sunu Widyatmoko','jarry','king' ) )GROUP BY a.phone) d;

使用date时,传入的参数的时分秒被截取掉了2018-03-01 00:00:00--2018-04-01 23:59:59

SELECT count(1) FROM (SELECT a.phone FROM cl_sms a LEFT JOIN cl_user b
 ON a.phone = b.login_name LEFT JOIN cl_user_base_info c ON b.id = 
 c.user_id WHERE date(a.send_time) >= '2018-03-01'AND 
 date(a.send_time) <= '2018-04-01'AND  OR c.real_name NOT IN 
 ('A Sunu Widyatmoko','jarry','king' ) )GROUP BY a.phone) d;

针对有关时间范围的查询还是需要谨慎,否则间隔一天时间

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaSQLException是java.sql的一个类,用于处理与数据库相关的异常。SQLException是一个受检异常,需要在方法的throws子句声明或捕获并处理。 在Java使用java.sqlDate类来表示数据库DATE类型数据。以下是使用java.sql.Date的一些常用操作: 1. 创建java.sql.Date对象: ```java import java.sql.Date; // 创建当前日期的java.sql.Date对象 Date currentDate = new Date(System.currentTimeMillis()); // 创建指定日期的java.sql.Date对象 Date specificDate = Date.valueOf("2022-01-01"); ``` 2. 将java.util.Date转换为java.sql.Date: ```java import java.util.Date; import java.sql.Date; Date utilDate = new Date(); Date sqlDate = new Date(utilDate.getTime()); // 将util.Date对象转换为sql.Date对象 ``` 3. 将java.sql.Date转换为java.util.Date: ```java import java.sql.Date; import java.util.Date; Date sqlDate = new Date(System.currentTimeMillis()); Date utilDate = new Date(sqlDate.getTime()); // 将sql.Date对象转换为util.Date对象 ``` 4. 比较日期: ```java import java.sql.Date; Date date1 = Date.valueOf("2022-01-01"); Date date2 = Date.valueOf("2022-01-02"); int comparison = date1.compareTo(date2); // 比较两个日期,返回负数、0或正数 if (date1.before(date2)) { // date1在date2之前 } if (date1.after(date2)) { // date1在date2之后 } ``` 5. 格式化日期: ```java import java.sql.Date; import java.text.SimpleDateFormat; Date date = Date.valueOf("2022-01-01"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = sdf.format(date); // 格式化为字符串 ``` 以上是java.sql.Date的一些基本用法,通过这些方法,可以在Java方便地处理数据库DATE类型数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值