期时用到的函数。 DATE、TIME 和 TIMESTAMP: SQL 定义了三种与时间有关的数据类型:DATE 由日、月和年组成。TIME 由小时、分钟和秒组成。 TIMESTAMP 将 DATE 和 TIME 结合起来,并添加了纳秒域。 标准 Java 类 java.util.Date 可提供日期和时间信息。但由于该类包含 DATE 和 TIME 信息而没有 TIMESTAMP 所需的纳秒,因此并不与上述三种 SQL 类型完全相配。 因此我们定义了 java.util.Date 的三种子类。它们是: 1. 有关 SQL DATE 信息的 java.sql.Date 2. 有关 SQL TIME 信息的 java.sql.Time 3. 有关 SQL TIMESTAMP 信息的 java.sql.Timestamp 对于 java.sql.Time,java.util.Time 基本类的小时、分钟、秒和毫秒域被设置为零。 对于 java.sql.Date,java.util.Date 基本类的年、月和日域被分别设置为 1970 年 1
月 1 日。这是在 Java 新纪元中的“零”日期。java.sql.date中的日期可以和标准的SQL语句中含有日期的字段进行比较.java.sql.Timestamp 类通过添加纳秒域来扩展
java.util.Date。 Oracle中两个转换函数: 1. to_date() 作用将字符类型按一定格式转化为日期类型: 具体用法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。如;to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd
hh24:mi:ss'') 将得到具体的时间。 2. to_char():将日期转按一定格式换成字符类型: 具体用法:to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') to_date()与24小时制表示法及mm分钟的显示: 在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用“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代替分钟。 oracle默认的系统时间就是sysdate函数,储存的数据形如2005-3-2510:55:33
,java 中取时间的对象是java.util.Date。 select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual 在java对oracle的操作中,对日期字段操作的例子: 表 book 中有name varchar2(20)//书籍名称,buydate Date //购买日期 两个字段。 已经创建了数据库连接Connection conn; 方法一、使用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 ); pstmt.execute(); 方法二、使用java.sql.Timestamp,同上不使用new Timestamp(....) PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)"); java.sql.Timestamp buydate=java.sql.Timestamp.valueOf("2004-06-08 05:33:99"); pstmt.setString(1, "Java编程思想"); pstmt.setTimestamp(2,buydate ); pstmt.execute(); 方法三、使用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 ); pstmt.execute(); 附: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:年中的第几个星期
===================== sql111= select * from logincount where logtime = to_date('2009-11-30','yyyy-MM-dd') st = con.prepareStatement("select * from logincount where logtime = to_date('"+ new java.sql.Date(date.getTime())+"','yyyy-MM-dd')");
获取当前时间的方法:
Java中获得当前时间的方法 有两种方法:
方法一:用java.util.Date类来实现,并结合java.text.DateFormat类来实现时间的格式化,看下面代码:
import java.util.*; import java.text.*; //以下默认时间日期显示方式都是汉语语言方式 //一般语言就默认汉语就可以了,时间日期的格式默认为MEDIUM风格,比如:2008-6-16 20:54:53 //以下显示的日期时间都是再Date类的基础上的来的,还可以利用Calendar类来实现见类TestDate2.java public class TestDate { public static void main(String[] args) { Date now = new Date(); Calendar cal = Calendar.getInstance(); DateFormat d1 = DateFormat.getDateInstance(); //默认语言(汉语)下的默认风格(MEDIUM风格,比如:2008-6-16 20:54:53) String str1 = d1.format(now); DateFormat d2 = DateFormat.getDateTimeInstance(); String str2 = d2.format(now); DateFormat d3 = DateFormat.getTimeInstance(); String str3 = d3.format(now); DateFormat d4 = DateFormat.getInstance(); //使用SHORT风格显示日期和时间 String str4 = d4.format(now);
DateFormat d5 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //显示日期,周,时间(精确到秒) String str5 = d5.format(now); DateFormat d6 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //显示日期。时间(精确到秒) String str6 = d6.format(now); DateFormat d7 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //显示日期,时间(精确到分) String str7 = d7.format(now); DateFormat d8 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); //显示日期,时间(精确到分) String str8 = d8.format(now);//与SHORT风格相比,这种方式最好用
System.out.println("用Date方式显示时间: " + now);//此方法显示的结果和Calendar.getInstance().getTime()一样 System.out.println("用DateFormat.getDateInstance()格式化时间后为:" + str1); 2 Java中获得当前时间的方法 System.out.println("用DateFormat.getDateTimeInstance()格式化时间后为:" + str2); System.out.println("用DateFormat.getTimeInstance()格式化时间后为:" + str3); System.out.println("用DateFormat.getInstance()格式化时间后为:" + str4); System.out.println("用DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL)格式化时间后为:" + str5); System.out.println("用DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG)格式化时间后为:" + str6); System.out.println("用DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT)格式化时间后为:" + str7); System.out.println("用DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM)格式化时间后为:" + str8); }
}
运行结果:
用Date方式显示时间: Mon Jun 16 20:54:53 CST 2008 用DateFormat.getDateInstance()格式化时间后为:2008-6-16 用DateFormat.getDateTimeInstance()格式化时间后为:2008-6-16 20:54:53 用DateFormat.getTimeInstance()格式化时间后为:20:54:53 用DateFormat.getInstance()格式化时间后为:08-6-16 下午8:54 用DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL)格式化时间后为 :2008年6月16日 星期一 下午08时54分53秒 CST 用DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG)格式化时间后为 :2008年6月16日 下午08时54分53秒 用DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT)格式化时间后 为:08-6-16 下午8:54 用DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM)格式化时间 后为:2008-6-16 20:54:53
方法二:用java.util.Calendar类来实现,看下面:
import java.util.*; import java.text.*; //以下是利用Calendar类来实现日期时间的,和Date类相比较比较简单
public class TestDate2 { public static void main(String[] args) { Calendar ca = Calendar.getInstance(); int year = ca.get(Calendar.YEAR);//获取年份 int month=ca.get(Calendar.MONTH);//获取月份 int day=ca.get(Calendar.DATE);//获取日 int minute=ca.get(Calendar.MINUTE);//分 int hour=ca.get(Calendar.HOUR);//小时 int second=ca.get(Calendar.SECOND);//秒 int WeekOfYear = ca.get(Calendar.DAY_OF_WEEK); System.out.println("用Calendar.getInstance().getTime()方式显示时间: " + ca.getTime()); System.out.println("用Calendar获得日期是:" + year +"年"+ month +"月"+ day + "日"); System.out.println("用Calendar获得时间是:" + hour +"时"+ minute +"分"+ second +"秒"); System.out.println(WeekOfYear);//显示今天是一周的第几天(我做的这个例子正好是周二,故结果显示2,如果你再周6运行,那么显示6) }
} 运行结果是: 用Calendar.getInstance().getTime()方式显示时间: Mon Jun 16 21:54:21 CST 2008 用Calendar获得日期是:2008年5月16日
用Calendar获得时间是:9时54分21秒
本文转自:http://blog.csdn.net/fantasyagain/article/details/7241669/