SQL查询中的日期比较
在不同的数据库中,时间的比较也许不同,但是通过hibernate统一封装起来。
java.util.Date begin, end;
String sql = "from demo where dt >=:begin and dt<=:end";
Query query = session.createQuery(sql);query.setDate("begin", begin);
query.setDate("end", end);List result = query.list();
顺便在提一个问题,我们经常碰到查询从A(起始时期)到B(结束日期)的纪录如果数据库中字段类型为timestamp,那么查询2005-11-23到2005-11-23的纪录时不会出现2005-11-23那一天的纪录,哪怕你的比较符号用的是>=和<=;因为数据库中的2005-11-23的纪录是这样的格式2005-11-23 15:35:48:253,而query.setDate设置一个时间参数进去,他是用这个时间比较的2005-11-23 00:00:00 000,所以因该用query.setTimeStamp("end",endDate);
对开始时间
startDate.setHours(0)startDate.setMinutes(0);
startDate.setSeconds(0);
这样就是查询 A-0:0:0 到 B-23:59:59时间段的数据
下面是一个时间比较的案例:
//当前时间
Calendar cal = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=Timestamp.valueOf(formatter.format(cal.getTime()));
String hsql = " from com.cw.x2.auth.naming.resac.entity.NameAuthority where period.end<=:end and id='"+id+"'";
Query query = getSession().createQuery(hsql);
query.setTimestamp("end", date);
List list = query.list();
数据库表中的 end 字段是 Timestamp类型.
其他:
//1年前日期
java.util.Date myDate=new java.util.Date();
long myTime=(myDate.getTime()/1000)-60*60*24*365;
myDate.setTime(myTime*1000);
String mDate=formatter.format(myDate);
out.println(mDate);
//明天日期
myDate=new java.util.Date();
myTime=(myDate.getTime()/1000)+60*60*24;
myDate.setTime(myTime*1000);
mDate=formatter.format(myDate);
out.println(mDate);
out.println("<br>");
//两个时间之间的天数
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date= myFormatter.parse("2003-05-1");
java.util.Date mydate= myFormatter.parse("1899-12-30");
long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
out.println(day);
out.println("<br>");
//加半小时
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 = format.parse("2002-02-28 23:16:00");
long Time=(date1.getTime()/1000)+60*30;
date1.setTime(Time*1000);
String mydate1=formatter.format(date1);
out.println(mydate1);
out.println("<br>");
//年月周求日期
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
java.util.Date date2= formatter2.parse("2003-05 5 星期五");
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
String mydate2=formatter3.format(date2);
out.println(mydate2);
out.println("<br>");
//求是星期几
mydate= myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = new SimpleDateFormat("E");
String mydate3=formatter4.format(mydate);
out.println(mydate3);
out.println("<br>");
SQL查询中的日期比较相关推荐
- 读书笔记:SQL 查询中的SQL*Plus 替换变量(DEFINE变量)和参数
本文为"SQL*Plus 替换变量 - 在 SQL 查询中定义变量和参数"的读书笔记. 此文主要是讲替换变量,也称为DEFINE变量,但也涉及了绑定变量和SQL Plus系统变量. ...
- oracle查数据存入数组,如何在SQL查询中使用Oracle关联数组
ODP.Net公开了将关联数组作为参数从C#传递到Oracle存储过程的能力.除非您尝试在sql查询中使用该关联数组中包含的数据,否则它是一个很好的功能. 原因是它需要上下文切换 – SQL语句需要S ...
- SQL查询中having和where的异同点
SQL查询中having与where 的异同点 在sql查询中, having与where类似,可以筛选数据,where后的表达式怎么写,having后就怎么写. 1. where针对表中的列发挥作用 ...
- Laravel SQL查询中first、pluck、lists方法的使用
Laravel SQL查询中first.pluck.lists方法的使用
- SQL Server中的日期和时间:DATEADD()
我们现在处于SQL Server和Azure SQL数据库中关于日期和时间的长篇系列的主页. 本周我们将讨论日期和时间中我最喜欢的T-SQL函数之一: DATEADD(). 句法 与类似的功能一样, ...
- sql server中对日期字段值的比较
本文转自:http://www.cnblogs.com/feison/articles/166981.html sql server中对日期字段的比较方式有多种,介绍几种常用的方式: 用northwi ...
- vba ado 执行多条mysql 语句,Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结...
原标题:Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结 本章概要: 1,几个概念 1.1, 数据库和Excel工作簿 1.2,数据表和Excel工作表 1.3,记录.字段 ...
- SQL Server中的日期时间类型
一. 数据类型 SQL Server008在上一个版本的基础上把日期时间类的数据类型增加到了六个.除了SQL Server2005的datetime和smalltime之外,加了date,dateti ...
- java sql 查询中的转义序列不对_在 JDBC 中使用 SQL 转义序列 - SQL Server | Microsoft Docs...
使用 SQL 转义序列Using SQL escape sequences 08/12/2019 本文内容 按照 JDBC API 的定义,Microsoft JDBC Driver for SQL ...
最新文章
- python的socket编程
- NEO智能合约黑盒测试框架
- 机器学习问题方法总结
- 如何防止app接口被别人调用
- UDK编辑器 49条小提示(转)
- android tv背景图片,android中shape绘制背景图片
- python获取淘宝服务器时间的代码
- mp4 avc格式_sps_pps
- PhysX3.4文档(4) --Rigid Body Overview
- onblur和onfocus
- 探索 ES8 Object.entries()
- 在图片上涂鸦(其实就是乱画 O(∩_∩)O)
- 写给程序员看的项目管理入门
- 赵小楼《天道》《遥远的救世主》深度解析(135)观念,传统观念,传统观念有没有用取决于观念,而不在传统
- 用加密锁实现网站身份认证
- 使用Spring JPA中Page、Pageable接口和Sort类完成分页排序
- 论文的引言要写什么?
- [蓝桥杯2020初赛] 成绩统计
- android 虚拟键盘高度,获取Android中虚拟键盘的高度
- 造病毒攻陷三亿网民,中国黑客十八年做了些什么?