这个属于oracle时间函数的用法
在oracle里,日期格式是一种特殊的东西
这里有一个日期转换函数
select to_char(日期,'yyyy-mm-dd hh24:mi:ss') from tablename;
这里的to_char就是将日期型转换成字符型的一个函数,转换成的格式就是
2010-08-23 17:51:20
当然你可以将这个日期转换成其他,如:
select to_char(日期,'yyyy-mm-dd') from tablename;
查出来的结果2010-08-23
所以你要根据这个日期来查东西就可以这么用
select * from tablename where to_char(日期,'yyyymmdd')between '20100801' and '20100823'
这个就是查日期8月1日到8月23日的数据
select * from tablename where to_char(日期,'yyyymmdd') = '20100801'
这个就是查8月1日的数据
你后边的" + model.Csrq + "参数传进来的是什么东西?
---------补充2-------
'yyyy-mm-dd 24hi:mi:ss'
这个地方错了,应改成
'yyyy-mm-dd hh24:mi:ss' 
不是24hi对我有帮助
1回答时间:2010-8-23 21:09 | 我来评论 
向TA求助 回答者: badkano | 十四级采纳率:46% 名人
擅长领域: 数据库 程序设计 电脑/网络 动漫
参加的活动: 暂时没有参加的活动
提问者对于答案的评价:
谢谢你的帮助         
相关内容
2009-10-17 oracle中DATE类型字段如何新增记录 1 2010-8-30 oracle数据库表中的date类型字段反映射成hibernate实体bean时,是什么类... 2010-9-27 把时间 2010-10-01 09:28:03插入oracle 的date类型字段 怎么写(时分秒... 1 2009-9-22 jsp查询Oracle的date数据类型 2009-10-26 查询Oracle数据库表字段类型sql语句 2 更多关于oracle根据日期查询的问题>>
查看文章   
有关java中的Date,String,Timestamp之间的转化问题2010-12-07 15:22一.获取系统当前时间:
1.System.out.println(new Timestamp(new java.util.Date().getTime));    //包含时分秒
2.System.out.println(new java.sql.Date(new java.util.Date().getTime));    //不包含时分秒
3.通过格式化类获取任意格式的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss SSS"); String time = sdf.Instance().getTime()); System.out.println(time);
sql包的Date类没有无参的构造函数,而util的Date类有无参的构造函数
java.util.Date date = new java.util.Date();是正确的  //Tue Jun 15 09:04:23 CST 2010
java.sql.Date date = new java.sql.Date();是错误的
但是sql包的Date有一个带long型参数的构造函数,因此可以使用以下方式
java.sql.Date date = new java.sql.Date(new java.util.Date().getTime());  //2010-6-17
new java.util.Date():构造函数没有接受任何参数. 而这个构造函数在内部使用了System.currentTimeMillis() 方法来从系统获取日期. 下面是util包的Date的构造方法:
public Date() { this(System.currentTimeMillis()); }
还发现
一件怪异的事情:
// String转化成date String str = "9-29-2001";
System.out.println(java.sql.Date.valueOf(str));
输出:
0016-10-21
真是奇怪.
三. Date转化成String
//Date转化成String: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
输出:
2010-06-17 16:30:21 781
四. Timestamp转化成String
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒
Timestamp now = new Timestamp(System.currentTimeMillis());//获取系统当前时间
String str = df.format(now);
System.out.println(str);
输出:
2010-06-17 16:46:34
五. String转化成Timestamp
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date11 = df1.parse("2010-6-2 16:10:38.00");
String time = df1.format(date11);
Timestamp ts = Timestamp.valueOf(time);
System.out.println(ts);
输出:
2010-06-02 16:10:38.0
select * from t_consultjfhjs t
atedate>=to_date('2003-10-10 9:56:15','yyyy-mm-dd hh:mm:ss)
select to_char(sysdate,'yyyymmdd hh24:mi:ss')
select last_day(sysdate) from dual
以24小时形式显示出来
XML/HTML 代码复制内容到剪贴板
01.select to_char(sysdate,'yyyymmdd hh24:mi:ss')
结果:20100513 10:40:45
相反的是to_date函数
3、某月的最后一天 用last_day函数
SQL 代码复制内容到剪贴板
01.select last_day(sysdate) from dual
结果:2010-5-31 10:44:21
4、加法计算 +1即增加一天,如果精确到小时、分钟、秒则用除法
如:获得下月第一天时刻:
SQL 代码复制内容到剪贴板
01.select last_day(sysdate)+1 from dual
再如:获得一小时后时刻
oracle查询日期语句在我们使用数据库过程中是经常要用到的,下面就为您介绍16种oracle查询日期语句,每一种oracle查询日期语句实现了一个功能,希望对您能有所帮助。
№1:取得当前日期是本月的第几周
SQL>  select  to_char(sysdate,'YYYYMMDD  W  HH24:MI:SS')  from  dual;
TO_CHAR(SYSDATE,'YY
-------------------
20030327  4  18:16:09
SQL>  select  to_char(sysdate,'W')  from  dual;
T
-
4
№2:取得当前日期是一个星期中的第几天,注意星期日是第一天
SQL>  select  sysdate,to_char(sysdate,'D')  from  dual;
SYSDATE      T
---------  -
27-MAR-03  5
类似:
select  to_char(sysdate,'yyyy')  from  dual;  --年
select  to_char(sysdate,'Q'  from  dual;          --季
select  to_char(sysdate,'mm')  from  dual;      --月
select  to_char(sysdate,'dd')  from  dual;      --日
ddd  年中的第几天
WW  年中的第几个星期
W  该月中第几个星期
DAY 周中的星期几
D  今天对映的NUMBER
'1','星期日',  '2','星期一', '3','星期二', '4','星期三', '5','星期
四',  '6','星期五',  '7','星期六'
hh  小时(12)
hh24  小时(24)
Mi  分
ss  秒
№3:取当前日期是星期几中文显示:
SQL>  select  to_char(sysdate,'day')  from  dual;
TO_CHAR(SYSDATE,'DAY')
----------------------
星期四
№4:如果一个表在一个date类型的字段上面建立了索引,如何使用
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
№5: 得到当前的日期
select sysdate from dual;
№6: 得到当天凌晨0点0分0秒的日期
select trunc(sysdate) from dual;
-- 得到这天的最后一秒
select trunc(sysdate) + 0.99999 from dual;
-- 得到小时的具体数值
select trunc(sysdate) + 1/24 from dual;
select trunc(sysdate) + 7/24 from dual;
№7:得到明天凌晨0点0分0秒的日期
select trunc(sysdate+1) from dual;
select trunc(sysdate)+1 from dual;
№8: 本月一日的日期
select trunc(sysdate,'mm') from dual;
№9:得到下月一日的日期
select trunc(add_months(sysdate,1),'mm') from dual;
№10:返回当前月的最后一天?
select last_day(sysdate) from dual;     
select last_day(trunc(sysdate)) from dual;
select trunc(last_day(sysdate)) from dual;
select trunc(add_months(sysdate,1),'m m') - 1 from dual;
№11: 得到一年的每一天
select trunc(sysdate,'yyyy')+ rn -1 date0
from
(select rownum rn from all_objects
where rownum<366);
№12:今天是今年的第N天
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
№13:如何在给现有的日期加上2年
select add_months(sysdate,24) from dual;
№14:判断某一日子所在年分是否为润年
select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual;
№15:判断两年后是否为润年
select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),'dd'),'29','闰年','平年') from dual;
№16:得到日期的季度
select ceil(to_number(to_char(sysdate,'mm'))/3) from dual;
select to_char(sysdate, 'Q') from dual;
以上就是oracle查询日期语句介绍。
public static java.util.Date toDate(java.sql.Timestamp timestamp) {
long milliseconds = Time() + (Nanos() / 1000000);
return new java.util.Date(milliseconds);
}
方法一、使用java.sql.Date实现比较简单的yyyy-mm-dd格式日期。
  java.sql.Date不支持时间格式。切记不要使用new java.sql.Date(int year,int month,int date),因为还要处理时间差问题。
  PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");
  java.sql.Date buydate=java.sql.Date.valueOf("2005-06-08");
  pstmt.setString(1, "Java编程思想");
  pstmt.setDate(2,buydate );
  ute();
  方法二、使用java.sql.Timestamp,同上不使用new Timestamp(....)
  PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");
  java.sql.Timestamp buyda
te=java.sql.Timestamp.valueOf("2004-06-08 05:33:99");
  pstmt.setString(1, "Java编程思想");
  pstmt.setTimestamp(2,buydate );
  ute();
  方法三、使用oracle 的to_date内置函数
  PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,to_date(?, 'yyyy-mm-dd hh24:mi:ss')");
  String buydate="2004-06-08 05:33:99";
  pstmt.setString(1, "Java编程思想");
  pstmt.setString(2,buydate );
  ute();
  附:oracle日期格式参数 含义说明 
  d: 一周中的星期几 
  day: 天的名字,使用空格填充到9个字符 
  dd: 月中的第几天 
  ddd: 年中的第几天 
  dy: 天的简写名 
  iw: ISO标准的年中的第几周 
  iyyy: ISO标准的四位年份 
  yyyy: 四位年份 
  yyy,yy,y: 年份的最后三位,两位,一位 
  hh: 小时,按12小时计 
  hh24: 小时,按24小时计 
  mi: 分 
  ss: 秒 
  mm: 月 
  mon: 月份的简写 
  month: 月份的全名 
  w: 该月的第几个星期 
  ww: 年中的第几个星期
  到此刻,你应该烦恼已消,轻松了很多吧。
java String和Date转换,以及时间的比较2010年10月20日 星期三 02:26 P.M.java String和Date转换,以及时间的比较(查下API java.util.Date)
SimpleDateFormat函数语法:
G 年代标志符
y 年
M 月
d 日
h 时 在上午或下午 (1~12)
H 时 在一天中 (0~23)
m 分
s 秒
S 毫秒
E 星期
D 一年中的第几天
F 一月中第几个星期几
w 一年中第几个星期
W 一月中第几个星期
a 上午 / 下午 标记符
k 时 在一天中 (1~24)
K 时 在上午或下午 (0~11)
z 时区
常见标准的写法"yyyy-MM-dd HH:mm:ss",注意大小写,时间是24小时制,24小时制转换成12小时制只需将HH改成hh,不需要另外的函数。
*/
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");       
DateFormat format 2= new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
// String转Date (转化时得抛出异常)
private String bDate = "2009-04-02 08:30";
private String eDate = "2009-02-02 07:30";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date bdate = formatter.parse(bDate);
Date edate = formatter.parse(eDate);
//Date转String
Date date=new Date();
String str=format.format(date);
//时间的比较方法1
long begin = (Time() / 1000) ;  //此时单位为秒,bdate为上面的Date对象
long end = (Time() / 1000) ;    //Time()获得的时间以毫秒为单位
然后利用end - begin可得出相差的秒数
由此可想到若要把现在的时间提前几分钟或
推后几分钟的算法了吧!比如,将上文String 对象bDate的时间推后几分钟,算法如下:(已经有上文得到了long对象begin)
begin = begin - 60 * min;    //min为你要推迟的分钟数,比如令int min = 6;
然后将String对象转化为Date对象:
bDate = formatter.format(begin * 1000);    //记得begin * 1000将时间转化为毫秒
这样现在的bDate跟最开始定义的bDate相比,你会发现其中的效果。
//时间的比较方法2:利用String对象方法compareTo()
//判断时间date1是否在时间date2之前
public static int isDateBefore(String date1,String date2)
{
return date1pareTo(date2);
}
//判断当前时间是否在时间date2之前
public static int isDateBefore(String date2)
{
String date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
return date1pareTo(date2);
SQL 代码复制内容到剪贴板
01.select sysdate+1/24 from dual
再如:获得10秒后的时刻
SQL 代码复制内容到剪贴板
01.select sysdate+1/24/60/60*10 from dual
5、获得下一星期几的日期 使用next_day函数
如现在要获得下个星期一的日期:
SQL 代码复制内容到剪贴板
01.select next_day(sysdate,2) from dual
注意这里是2,为什么是2?因为这里有效的值是1-7,而1表示星期日,2表示星期一……以此类推到星期六。
6、获得某年、某月的第一天,或者某天的0点整时刻 使用trunc函数
SQL 代码复制内容到剪贴板
01.select TRUNC(sysdate,'YYYY') from dual
结果:2010-01-01
SQL 代码复制内容到剪贴板
01.select TRUNC(sysdate,'MM') from dual
结果:2010-05-01
SQL 代码复制内容到剪贴板
01.select TRUNC(sysdate) from dual
结果:2010-05-13 (今天)
SQL 代码复制内容到剪贴板
01.select TRUNC(sysdate,'HH') from dual
结果:2010-05-13 10:00:00 (现在是10点多)
7、使用add_months可以以当前日期为基准查询上几月、下几月的日期
SQL 代码复制内容到剪贴板
01.select add_months(sysdate,-1) from dual
负数表示查询上n月
如果要查上一年,则是-12,并没有单独的add_years函数!
再想:如果要查上一周,有没有特殊函数可提供?没有,一周就是7天嘛,所以查询语句为:
SQL 代码复制内容到剪贴板
01.select sysdate-7 from dual
综述:通过上面的汇总,应该能应付一般的SQL查询日期的应用了。一般情况下要综合上面所说的多个查询才能得出自己想要的结果。
TO_CHAR 是把日期或数字转换为字符串
TO_DATE 是把字符串转换为数据库中得日期类型转换函数
TO_NUMBER 将字符转化为数字
? TO_CHAR
使用TO_CHAR函数处理数字
TO_CHAR(number, '格式')
TO_CHAR(salary,’$99,999.99’);
使用TO_CHAR函数处理日期
TO_CHAR(date,’格式’);
? TO_NUMBER
使用TO_NUMBER函数将字符转换为数字
TO_NUMBER(char[, '格式'])
? TO_DATE
使用TO_DATE函数将字符转换为日期
TO_DATE(char[, '格式'])
? 数字格式格式
9 代表一个数字
0 强制显示0
$ 放置一个$符
L 放置一个浮动本地货币符
星期一到星期日的英文. 显示小数点
, 显示千位指示符
?
日期格式
格式控制 描述
YYYY、YYY、YY 分别代表4位、3位、2位的数字年
YEAR 年的拼写
MM 数字月
MONTH 月的全拼
MON 月的缩写
DD 数字日
DAY 星期的全拼
DY 星期的缩写
AM 表示上午或者下午
HH24、HH12 12小时制或24小时制
MI 分钟
SS 秒钟
SP 数字的拼写
TH 数字的序数词
“特殊字符” 假如特殊字符
HH24:MI:SS AM 15:43:20 PM
日期例子:
SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL
SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUAL
SELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUAL
SELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUAL
SELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUAL
SELECT TO_DATE('2006', 'YYYY') FROM DUAL
日期说明:
当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。
同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。
但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年,取整到当前月。
注意:
1.在使用Oracle的to_date函数来做日期转换时,可能会直觉地采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;原因是SQL中不区分大小写,
MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
2.另要以24小时的形式显示出来要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份
TO_DATE格式(以时间:2007-11-02  13:45:25为例)
Year:     
yy two digits 两位年                显示值:07
yyy three digits 三位年                显示值:007
yyyy four digits 四位年                显示值:2007
Month:     
mm    number    两位月              显示值:11
mon    abbreviated 字符集表示          显示值:11月,若是英文版,显示nov   
month spelled out 字符集表示          显示值:11月,若是英文版,显示november
Day:     
dd    number