关于时间段的SQL(Orcale、SQL Server)查询
一、Orcale 时的查询
String hql = "from SmsTemplate t where 1=1 ";
if (model != null && !"".equals(model.getEndTimes())&& null!=model.getEndTimes() ) {
SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); //格式化当前系统日期
Date endt = model.getEndTimes();
String dateTime = dateFm.format(endt);
hql += " and t.endTimes<= to_date('" + dateTime+"' ,'yyyy-mm-dd')"; //注意单引号
//hql += " and t.endTimes<= to_date('" + dateTime+"' ,'yyyy-mm-dd HH24:mi:ss')";//带时、分、秒 注意 mi
//注:endTimes在数据库中时DATE型的
}
二、普通SQL Server 查询
DECLARE @dt DATETIME
DECLARE @dt2 DATETIME
SET @dt = '2008-07-24'
SET @dt2 = DATEADD(day, 1, @dt)
select @dt as dt, @dt2 as dt2
select * from meet_now where meetdate between CONVERT(datetime , @dt, 111 ) and convert(datetime , @dt2, 111 ) order by id
select * from meet_now where DATEDIFF(day, meetdate, @dt) = 0 order by id
相关文档:
What is SQL*Plus and where does it come from?
SQL*Plus is a command line SQL and PL/SQL language interface and reporting tool that ships with the Oracle Database Client and Server software. It can be used interactively or driven from scripts. SQL*Plus is frequently used by DBAs and Developers ......
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE 的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要 ......
SQL语句优化实践之一SQL_TRACE
环境:在PL/sql上调试数据
Pl/sql developer工具连接实例后即作为一个用户进程占用一个session;
select * from v$session t where t.PROGRAM='plsqldev.exe' and t.USERNAME='DZJC'
查询结果显示了几个关键的字段
SADDR RAW(4) S ......
1.分页方案一:(利用Not In和SELECT TOP分页)
语句形式:
SELECTTOP10*fromTestTableWHERE(IDNOTIN (SELECTTOP20id fromTestTable ORDERBYid))ORDERBYIDSELECTTOP页大小*fromTestTableWHERE(IDNOTIN (SELECTTOP页大小*页数id from表 ORDERBYid))ORDERBYID
2.分 ......
原文出处:http://www.cnblogs.com/luoht/archive/2010/03/01/1676049.html
用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。
但是用IN的SQL性能总是比较低的,从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:
SQL试图将其转换成多个表的连接,如果转换不成功则先执行 ......