一、数据库时间转换函数
与date操作关系最大的就是两个转换函数:to_date(),to_char()
to_date() 作用将字符类型按一定格式转化为日期类型:
具体用法:to_date('2004-11-27','yyyy-mm-dd'),
前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。
如to_date('2004-11-27 13:34:43', 'yyyy-mm-dd hh24:mi:ss') 将得到具体的时间
to_char():将日期转按一定格式换成字符类型
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') time from dual;
date/time 转换的模板
模板
|
描述
|
---|---|
HH
|
一天的小时数 (01-12)
|
HH12
|
一天的小时数 (01-12)
|
HH24
|
一天的小时数 (00-23)
|
MI
|
分钟 (00-59)
|
SS
|
秒 (00-59)
|
SSSS
|
午夜后的秒 (0-86399)
|
AM or A.M. or PM or P.M.
|
正午标识(大写)
|
am or a.m. or pm or p.m.
|
正午标识(小写)
|
Y,YYY
|
带逗号的年(4 和更多位)
|
YYYY
|
年(4和更多位)
|
YYY
|
年的后三位
|
YY
|
年的后两位
|
Y
|
年的最后一位
|
BC or B.C. or AD or A.D.
|
年标识(大写)
|
bc or b.c. or ad or a.d.
|
年标识(小写)
|
MONTH
|
全长大写月份名(9字符)
|
Month
|
全长混合大小写月份名(9字符)
|
month
|
全长小写月份名(9字符)
|
MON
|
大写缩写月份名(3字符)
|
Mon
|
缩写混合大小写月份名(3字符)
|
mon
|
小写缩写月份名(3字符)
|
MM
|
月份 (01-12)
|
DAY
|
全长大写日期名(9字符)
|
Day
|
全长混合大小写日期名(9字符)
|
day
|
全长小写日期名(9字符)
|
DY
|
缩写大写日期名(3字符)
|
Dy
|
缩写混合大小写日期名(3字符)
|
dy
|
缩写小写日期名(3字符)
|
DDD
|
一年里的日子(001-366)
|
DD
|
一个月里的日子(01-31)
|
D
|
一周里的日子(1-7;SUN=1)
|
W
|
一个月里的周数
|
WW
|
一年里的周数
|
CC
|
世纪(2 位)
|
J
|
Julian 日期(自公元前4712年1月1日来的日期)
|
Q
|
季度
|
RM
|
罗马数字的月份(I-XII;I=JAN)-大写
|
rm
|
罗马数字的月份(I-XII;I=JAN)-小写
|
二、java时间转换
java中日期转换2011-03-10 19:351.获取时间的三种方法。
A.通过System.currentTimeMillis()方法得到以毫秒为单位的当前时间。
B.使用Date类。Date d=new Date();得到一个当前时间。
C.使用Calendar类,由于Calendar为抽象类不能直接创建对象,可以使用Calendar c= Calendar.getInstance();
3.时间的转化--从字符串转换为时间,使用java.sql.Timestamp类的valueOf("yyyy-MM-dd hh:mm:ss[.f...]")方法。
4.创建其它时区的时间。在创建一个GregorianCalendar类对象时指定时区。Calendar cJapan=new GregorianCalendar(TimeZone.getTimeZone("Japan"));创建一个日本当前时间。
还可用API——SimpleDateFormat,它是属於java.text.SimpleDateFormat,所以请记得import进来!
用法:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
这一行最重要,它确立了转换的格式,yyyy是完整的西元年,MM是月份,dd是日期, 至於HH:mm:ss就不需要我再解释了吧!
ps:为什麽有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小时制,而hh是12小时制
其中模式字母为:
1.字串转日期:
2002-10-8 15:30:22要把它转成日期,可以用
Date date=sdf.parse("2002-10-8 15:30:22");
2.日期转字串
假如把今天的日期转成字串可用
String datestr=sdf.format(new Date());
这个字串的内容便类似2002-10-08 14:55:38
透过这个API我们便可以随心所欲的将日期转成我们想要的字串格式,例如希望将日期输出成2002年10月08日,
我们可以这麽写:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
String datestr=sdf.format(new Date());
datestr便会依照我们设定的格式输出 实例:import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class TimeTest {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());//得到以毫秒为单位的当前时间
Date d=new Date();//得到一个当前时间
System.out.println(d);
Calendar c= Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
System.out.println(c);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");//时间格式化
System.out.println(sdf.format(d));
System.out.println(sdf.format(c.getTime()));
Timestamp ts=Timestamp.valueOf("2008-01-02 10:12:23");
System.out.println(sdf.format(ts));
Calendar cJapan=new GregorianCalendar(TimeZone.getTimeZone("Japan"));
System.out.println(cJapan.get(Calendar.HOUR_OF_DAY));
}
}