精华内容
下载资源
问答
  • Java Date 详解

    万次阅读 2015-02-06 22:16:07
    Java Date 详解 1.java.sql.Date与java.util.Date比较  ① java.sql.Date 只有日期,没有时间  ② java.util.Date 时间日期都具备  ③ ResultSet.getDate(columnInt)取得的值是java.sql.Date类型,只有日期,没有...
    Java Date 详解
    1.java.sql.Date与java.util.Date比较
      ① java.sql.Date 只有日期,没有时间
      ② java.util.Date 时间日期都具备
      ③ ResultSet.getDate(columnInt)取得的值是java.sql.Date类型,只有日期,没有时间,就算转换为java.util.Date同样没有时间
      ④ java.sql.Timestamp 时间日期都具备,ResultSet.getTimestamp(columnInt) 时间日期都有
      ⑤ 建表 T1 用以测试,建表语句↓
    create table t1(    
    id number not null,    
    charcol char default 'Y',    
    datecol date default sysdate,    
    intcol integer default 12);
    
    insert into t1 values(1,'y',sysdate,12);
    insert into t1 values(2,'n',sysdate,13);
    insert into t1 values(3,null,sysdate,null);
    commit;

      ⑥ DateTest 类(测试时间转换)
    package com.date;
    
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Timestamp;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    public class DateTest {
    	public static void main(String[] args) {
    		Date date = new Date(System.currentTimeMillis());
    		 System.out.println(date);
    		java.util.Date date2 = new java.util.Date(System.currentTimeMillis());
    		 System.out.println(date2);
    
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    		String a = sdf.format(date2);
    		System.out.println(a);
    
    		Timestamp t = new Timestamp(System.currentTimeMillis());
    
    		String b = sdf.format(t);
    		System.out.println(b);
    
    		Calendar c = Calendar.getInstance();
    
    		c.setTime(date);
    		System.out.println(c.get(Calendar.MONTH));
    
    		String ss = "1898-12-12 09:08:23";
    		Timestamp t2 = Timestamp.valueOf(ss);
    		System.out.println(t2);
    		java.util.Date d1 = new java.util.Date();
    		SimpleDateFormat q = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    		System.out.println(q.format(d1));
    		java.sql.Date date3=new java.sql.Date(0);
    		
    		java.util.Date d2=new java.util.Date (date.getTime());
    		
    		Date sqlDate = new Date(date.getTime());
    		java.util.Date d3 = new java.util.Date(sqlDate.getTime());
    		System.out.println("utl获得秒数  "+d3.getSeconds());
    		DateTest.getSqlDate();
    	}
    	public static void getSqlDate(){
    		Connection con = DateTest.getConnection();
    		ResultSet rs = null;
    		PreparedStatement ps= null;
    		try {
    			 ps = con.prepareStatement("select * from t1 t where t.id = 1");
    			 rs = ps.executeQuery();
    			while (rs.next()) {
    				java.sql.Date sqlDate = rs.getDate(3);
    				java.util.Date utlDate = rs.getDate(3);
    				Timestamp tDate = rs.getTimestamp(3);
    				System.out.println("sqlDate  "+sqlDate);
    				System.out.println("utlDate  "+utlDate);
    				System.out.println("tDate  "+tDate);
    				java.util.Date Date2 = new java.util.Date(sqlDate.getTime());
    				System.out.println(Date2);
    			}
    		} catch (Exception e) {
    		}finally{
    			DateTest.closeJdbc(rs, con, ps);
    		}
    	}
    	public static Connection getConnection(){
    		Connection conn = null;
    		try {
    			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    			String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    			String userName = "slt_plat";
    			String passWord = "slt_plat";
    			conn = DriverManager.getConnection(url, userName, passWord);
    		} catch (Exception e) {
    			e.printStackTrace();
    		} 
    		return conn;
    	}
    	public static void closeJdbc(ResultSet rs,Connection con,Statement pst){
    		if(rs!=null){
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    		if(con!=null){
    			try {
    				con.close();
    			} catch (SQLException e) {
    			}
    		}
    		if(pst!=null){
    			try {
    				pst.close();
    			} catch (SQLException e) {
    			}
    		}
    	}
    
    }
    
    2.数据库配置对应Date
      ① @Temporal(TemporalType.DATE)数据库只记录日期
      ② 字段中的Date的类型必须是java.uril.Date,如果是sql.Date时间精度设置无效
      ③ @Enumerated(EnumType.STRING)枚举存入数据库以String存入,EnumType.ORDINAL存入为枚举
      ④ 枚举Titl 类
    package com.sf;
    
    public enum Tile {
    A,B,C
    }
    
      ⑤ Entity
    package com.sf;
    
    import java.util.Date;
    
    import javax.persistence.Entity;
    import javax.persistence.EnumType;
    import javax.persistence.Enumerated;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;
    
    @Entity(name="teacher")
    @Table(name = "teacher", catalog = "lportal")
    public class Teacher {
    @Id
    /*
     * @GeneratedValue = native auto自动生成;
     */
    @GeneratedValue
    private int id;
    private String name;
    private String title;
    /*
     * @Enumerated(EnumType.STRING)自定义类型;
     */
    @Enumerated(EnumType.ORDINAL)
    private Tile tile;
    /**
     * @Temporal(value=)value可以默认不写,直接写入值;
     * @Temporal(TemporalType.DATE)数据库只记录日期;
     * java.sql.Date 时间精度只有日期,没有时间,下面的Date如果用这个类,时间精度设置无效;
     */
    
    private Date birthDate;
    @Temporal(TemporalType.TIME)
    public Date getBirthDate() {
    	return birthDate;
    }
    public void setBirthDate(Date birthDate) {
    	this.birthDate = birthDate;
    }
    public int getId() {
    	return id;
    }
    public void setId(int id) {
    	this.id = id;
    }
    public String getName() {
    	return name;
    }
    public void setName(String name) {
    	this.name = name;
    }
    public String getTitle() {
    	return title;
    }
    public void setTitle(String title) {
    	this.title = title;
    }
    
    public Tile getTile() {
    	return tile;
    }
    public void setTile(Tile tile) {
    	this.tile = tile;
    }
    public Teacher() {
    }
    public Teacher(int id,Date date, String name, String title,Tile tile) {
    	this.id = id;
    	this.name = name;
    	this.title = title;
    	this.tile = tile;
    	this.birthDate = date;
    }
    }
    


    展开全文
  • JAVA中Date详解

    千次阅读 2017-08-16 10:20:22
    Java Date类的使用总结 Date类表示特定的瞬间,精确到毫秒。 有2种方法可以创建Date对象(这里不考虑已过时的构造函数) 1、public Date()——分配 Date 对象并初始化此对象,以表示分配它的时间(精确到...

    Java Date类的使用总结

    Date类表示特定的瞬间,精确到毫秒。

    有2种方法可以创建Date对象(这里不考虑已过时的构造函数)

    1、public Date()——分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

    ?
    1
    2
    3
    4
    5
    @Test
     public void test1() {
       Date date = new Date();
       System.out.println(date);
     }

    Sun Oct 23 22:39:14 CST 2016

    2、public Date(long date)——根据给定的毫秒值创建日期对象。

    ?
    1
    2
    3
    4
    5
    6
    @Test
    public void test2() {
      long time = System.currentTimeMillis();
      Date date = new Date(time);
      System.out.println(date);
    }

    Sun Oct 23 22:41:42 CST 2016

    介绍完了Date的构造函数后,接下来来看看日期与毫秒值的相互转换

    1、public long getTime()——日期转毫秒值

    通过getTime方法可以将一个日期类型转换为long类型的毫秒值

    ?
    1
    2
    3
    4
    5
    @Test
     public void test3() {
       Date date = new Date();
       System.out.println(date.getTime());
     }

    1477234414353

    2、public void setTime(long time)——毫秒值转日期

    ?
    1
    2
    3
    4
    5
    6
    7
    @Test
    public void test4() {
      long time = System.currentTimeMillis();
      Date date = new Date();
      date.setTime(time);
      System.out.println(date);
    }

    Sun Oct 23 22:53:05 CST 2016

    当然也可以通过构造函数public Date(long date)将毫秒值转为日期类型。

    通常我们会比较2个日期的大小,Date类提供以下方法用来比较2个日期的相关操作

    1、public boolean before(Date when)——测试此日期是否在指定日期之前,当且仅当此Date对象表示的瞬间比when表示的瞬间早,才返回true;否则返回false。

    ?
    1
    2
    3
    4
    5
    6
    @Test
    public void test5() {
      Date date1 = new Date(1000);
      Date date2 = new Date(2000);
      System.out.println(date1.before(date2));
    }

    true

    2、public boolean after(Date when)——测试此日期是否在指定日期之后,当且仅当此Date对象表示的瞬间比when表示的瞬间晚,才返回true;否则返回false。

    ?
    1
    2
    3
    4
    5
    6
    @Test
    public void test6() {
      Date date1 = new Date(1000);
      Date date2 = new Date(2000);
      System.out.println(date1.after(date2));
    }

    false

    3、public int compareTo(Date anotherDate)——比较两个日期的顺序。

    如果参数Date等于此Date,则返回值0;如果此Date在Date参数之前,则返回小于0的值;如果此Date在Date参数之后,则返回大于0的值。

    ?
    1
    2
    3
    4
    5
    6
    @Test
    public void test7() {
      Date date1 = new Date(1000);
      Date date2 = new Date(2000);
      System.out.println(date1.compareTo(date2));
    }

    -1


    一、Date类型的初始化

    1、 Date(int year, int month, int date); 直接写入年份是得不到正确的结果的。 因为java中Date是从1900年开始算的,所以前面的第一个参数只要填入从1900年后过了多少年就是你想要得到的年份。 月需要减1,日可以直接插入。 这种方法用的比较少,常用的是第二种方法。

    2、 这种方法是将一个符合特定格式,比如yyyy-MM-dd,的字符串转化成为Date类型的数据。 首先,定义一个Date类型的对象 Date date = null; 再定义一个String类型的符合格式的字符串 String dateStr = "2010-9-10"; 把这个字符串进行拆分 String[ ]  dateDivide = dateStr.split("-"); 把年月日分别取出,赋给Calendar,用 Calendar的getTime();取得日期再赋给date。

    例如:

    1
    2
    3
    4
    5
    6
    7
    8
    if(dateDivide.length==3){ 
       int year = Integer.parseInt(dateDivide [0].trim());//去掉空格 
         int month = Integer.parseInt(dateDivide [1].trim()); 
         int day = Integer.parseInt(dateDivide [2].trim()); 
         Calendar c = Calendar.getInstance();//获取一个日历实例 
         c.set(year, month-1, day);//设定日历的日期 
         date = c.getTime(); 
    }

    二、Date类型的比较

    Date a;
    Date b;
    假设现在你已经实例化了a和b
    a.after(b)返回一个boolean,如果a的时间在b之后(不包括等于)返回true
    b.before(a)返回一个boolean,如果b的时间在a之前(不包括等于)返回true
    a.equals(b)返回一个boolean,如果a的时间和b相等返回true

    三、Date类型常用的操作函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    // 1.计算某一月份的最大天数
    Calendar time = Calendar.getInstance();
    time.clear();
    time.set(Calendar.YEAR, year); // year 为 int
    time.set(Calendar.MONTH, i - 1);// 注意,Calendar对象默认一月为0
    int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本月份的天数
    // 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
    // 2.Calendar和Date的转化
    // (1) Calendar转化为Date Calendar
    cal = Calendar.getInstance();
    Date date = cal.getTime();
    // (2) Date转化为Calendar
    Date date = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    // 3.格式化输出日期时间(这个用的比较多)
    Date date = new Date();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String time = df.format(date);
    System.out.println(time);
    // 4.计算一年中的第几星期
    // (1)计算某一天是一年中的第几星期
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH, 8);
    cal.set(Calendar.DAY_OF_MONTH, 3);
    int weekno = cal.get(Calendar.WEEK_OF_YEAR);
    // (2)计算一年中的第几星期是几号
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.WEEK_OF_YEAR, 1);
    cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    System.out.println(df.format(cal.getTime()));//输出:2006-01-02
    // 5.add()和roll()的用法(不太常用)
    // (1)add()方法
    SimpleDateFormat df=newSimpleDateFormat("yyyy-MM-dd");
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH, 8);
    cal.set(Calendar.DAY_OF_MONTH, 3);
    cal.add(Calendar.DATE, -4);
    Date date = cal.getTime();
    System.out.println(df.format(date));
    cal.add(Calendar.DATE, 4);
    date = cal.getTime();
    System.out.println(df.format(date));//输出:2006-08-30 2006-09-03
    //(2)roll方法
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH,8);
    cal.set(Calendar.DAY_OF_MONTH,3);
    cal.roll(Calendar.DATE, -4);
    date=cal.getTime();
    System.out.println(df.format(date));
    cal.roll(Calendar.DATE,4);
    date=cal.getTime();
    System.out.println(df.format(date));//输出:2006-09-292006-09-03
    // 可见,roll()方法在本月内循环,一般使用add()方法;

    展开全文
  • Java中的Date详解

    千次阅读 2019-04-25 11:01:51
    * Date:表示特定的瞬间,精确到毫秒。 * * 构造方法: * Date():根据当前的默认毫秒值创建日期对象 * Date(long date):根据给定的毫秒值创建日期对象 */ public class DateDemo { public static void ...
    /*
     * Date:表示特定的瞬间,精确到毫秒。 
     * 
     * 构造方法:
     * 		Date():根据当前的默认毫秒值创建日期对象
     * 		Date(long date):根据给定的毫秒值创建日期对象
     */
    public class DateDemo {
    	public static void main(String[] args) {
    		// 创建对象
    		Date d = new Date();
    		System.out.println("d:" + d);
    
    		// 创建对象
    		// long time = System.currentTimeMillis();
    		long time = 1000 * 60 * 60; // 1小时
    		Date d2 = new Date(time);
    		System.out.println("d2:" + d2);
    	}
    }
    

    在这里插入图片描述

    import java.util.Date;
    
    /*
     * public long getTime():获取时间,以毫秒为单位
     * public void setTime(long time):设置时间
     * 
     * 从Date得到一个毫秒值
     * 		getTime()
     * 把一个毫秒值转换为Date
     * 		构造方法
     * 		setTime(long time)
     */
    public class DateDemo {
    	public static void main(String[] args) {
    		// 创建对象
    		Date d = new Date();
    
    		// 获取时间
    		long time = d.getTime();
    		System.out.println(time);
    		// System.out.println(System.currentTimeMillis());
    
    		System.out.println("d:" + d);
    		// 设置时间
    		d.setTime(1000);
    		System.out.println("d:" + d);
    	}
    }
    
    

    在这里插入图片描述

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /*
     * Date	 --	 String(格式化)
     * 		public final String format(Date date)
     * 
     * String -- Date(解析)
     * 		public Date parse(String source)
     * 
     * DateForamt:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat。
     * 
     * SimpleDateFormat的构造方法:
     * 		SimpleDateFormat():默认模式
     * 		SimpleDateFormat(String pattern):给定的模式
     * 			这个模式字符串该如何写呢?
     * 			通过查看API,我们就找到了对应的模式
     * 			年 y
     * 			月 M	
     * 			日 d
     * 			时 H
     * 			分 m
     * 			秒 s
     * 
     * 			2014年12月12日 12:12:12
     */
    public class DateFormatDemo {
    	public static void main(String[] args) throws ParseException {
    		// Date -- String
    		// 创建日期对象
    		Date d = new Date();
    		// 创建格式化对象
    		// SimpleDateFormat sdf = new SimpleDateFormat();
    		// 给定模式
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    		// public final String format(Date date)
    		String s = sdf.format(d);
    		System.out.println(s);
    		
    		
    		//String -- Date
    		String str = "2008-08-08 12:12:12";
    		//在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配
    		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		Date dd = sdf2.parse(str);
    		System.out.println(dd);
    	}
    }
    

    在这里插入图片描述

    /*
     * 算一下你来到这个世界多少天?
     * 
     * 分析:
     * 		A:键盘录入你的出生的年月日
     * 		B:把该字符串转换为一个日期
     * 		C:通过该日期得到一个毫秒值
     * 		D:获取当前时间的毫秒值
     * 		E:用D-C得到一个毫秒值
     * 		F:把E的毫秒值转换为年
     * 			/1000/60/60/24
     */
    public class MyYearOldDemo {
    	public static void main(String[] args) throws ParseException {
    		// 键盘录入你的出生的年月日
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入你的出生年月日:");
    		String line = sc.nextLine();
    
    		// 把该字符串转换为一个日期
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    		Date d = sdf.parse(line);
    
    		// 通过该日期得到一个毫秒值
    		long myTime = d.getTime();
    
    		// 获取当前时间的毫秒值
    		long nowTime = System.currentTimeMillis();
    
    		// 用D-C得到一个毫秒值
    		long time = nowTime - myTime;
    
    		// 把E的毫秒值转换为年
    		long day = time / 1000 / 60 / 60 / 24;
    
    		System.out.println("你来到这个世界:" + day + "天");
    	}
    }
    
    

    在这里插入图片描述

    展开全文
  • oracle中to_date详解

    万次阅读 2018-07-13 17:38:27
    TO_DATE格式(以时间:2007-11-02 13:45:25为例)1. 日期和字符转换函数用法(to_date,to_char) 代码如下:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串 select to_...

    TO_DATE格式(以时间:2007-11-02 13:45:25为例)

    1. 日期和字符转换函数用法(to_date,to_char)

     

    代码如下:

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串  
    select to_char(sysdate,'yyyy')  as nowYear   from dual;   //获取时间的年  
    select to_char(sysdate,'mm')    as nowMonth  from dual;   //获取时间的月  
    select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日  
    select to_char(sysdate,'hh24')  as nowHour   from dual;   //获取时间的时  
    select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分  
    select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒

     

    2. 字符串和时间互转

    代码如下:

    select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual
    select to_char( to_date(222,'J'),'Jsp') from dual //显示Two Hundred Twenty-Two   

     

    3.求某天是星期几

    代码如下:

    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;     //星期一     
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day',
    'NLS_DATE_LANGUAGE = American') from dual;   // monday   
    //设置日期语言     
    ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';     
    //也可以这样     
    TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')

     

    4. 两个日期间的天数

    代码如下:

    select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;

     

    5. 时间为null的用法

    代码如下:

    select id, active_date from table1     
    UNION     
    select 1, TO_DATE(null) from dual;  //注意要用TO_DATE(null)

     

    6.月份差

    代码如下:

    a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')     
    //那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。     
    //所以,当时间需要精确的时候,觉得to_char还是必要的

     

    7. 日期格式冲突问题
    输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'

    代码如下:

    alter system set NLS_DATE_LANGUAGE = American     
    alter session set NLS_DATE_LANGUAGE = American     
    //或者在to_date中写     
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),
       'day','NLS_DATE_LANGUAGE = American') from dual;     
    //注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,可查看     
    select * from nls_session_parameters     
    select * from V$NLS_PARAMETERS   

     

    8.查询特殊条件天数

    代码如下:

    select count(*)     
    from ( select rownum-1 rnum     
       from all_objects     
       where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-     
       02-01','yyyy-mm-dd')+1    
      )     
    where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )     
        not in ( '1', '7' )     

    //查找2002-02-28至2002-02-01间除星期一和七的天数     
    //在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒)

     

    9. 查找月份

    代码如下:

    select months_between(to_date('01-31-1999','MM-DD-YYYY'),
    to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;     
    //结果为:1     
    select months_between(to_date('02-01-1999','MM-DD-YYYY'),
    to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;     
    //结果为:1.03225806451613

     

    10. Next_day的用法

    代码如下:

    Next_day(date, day)     
    Monday-Sunday, for format code DAY     
    Mon-Sun, for format code DY     
    1-7, for format code D   

     

    11.获得小时数

    代码如下:

    //extract()找出日期或间隔值的字段值
    SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer     
    select sysdate ,to_char(sysdate,'hh') from dual;     

    SYSDATE               TO_CHAR(SYSDATE,'HH')     
    -------------------- ---------------------     
    2003-10-13 19:35:21   07    

    select sysdate ,to_char(sysdate,'hh24') from dual;     

    SYSDATE               TO_CHAR(SYSDATE,'HH24')     
    -------------------- -----------------------     
    2003-10-13 19:35:21   19  

     

    12.年月日的处理

    代码如下:

    SELECT
      older_date,
      newer_date,
      years,
      months,
      ABS (
        TRUNC (
          newer_date - ADD_MONTHS (older_date, years * 12 + months)
        )
      ) days
    FROM
      (
        SELECT
          TRUNC (
            MONTHS_BETWEEN (newer_date, older_date) / 12
          ) YEARS,
          MOD (
            TRUNC (
              MONTHS_BETWEEN (newer_date, older_date)
            ),
            12
          ) MONTHS,
          newer_date,
          older_date
        FROM
          (
            SELECT
              hiredate older_date,
              ADD_MONTHS (hiredate, ROWNUM) + ROWNUM newer_date
            FROM
              emp
          )
      )  

     

    13.处理月份天数不定的办法

    代码如下:

    select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual   

     

    14.找出今年的天数

    代码如下:

    select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual    
     //闰年的处理方法     
    to_char( last_day( to_date('02'    | | :year,'mmyyyy') ), 'dd' )     
     //如果是28就不是闰年

     

    15.yyyy与rrrr的区别

    代码如下:


    YYYY99  TO_C     
    ------- ----     
    yyyy 99 0099    
    rrrr 99 1999    
    yyyy 01 0001    
    rrrr 01 2001 

     

    16.不同时区的处理

    代码如下:

    select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,
    sysdate   from dual;   

     

    17. 5秒钟一个间隔

    代码如下:

    Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,
    TO_CHAR(sysdate,'SSSSS')   from dual    
    //2002-11-1 9:55:00 35786     
    //SSSSS表示5位秒数   

     

    18.一年的第几天

    代码如下:

    select TO_CHAR(SYSDATE,'DDD'),sysdate from dual   
    //310  2002-11-6 10:03:51   

     

    19.计算小时,分,秒,毫秒

     代码如下:

    SELECT
       Days,
       A,
       TRUNC (A * 24) Hours,
       TRUNC (A * 24 * 60 - 60 * TRUNC(A * 24)) Minutes,
       TRUNC (
         A * 24 * 60 * 60 - 60 * TRUNC (A * 24 * 60)
       ) Seconds,
       TRUNC (
         A * 24 * 60 * 60 * 100 - 100 * TRUNC (A * 24 * 60 * 60)
       ) mSeconds
     FROM
       (
         SELECT
           TRUNC (SYSDATE) Days,
           SYSDATE - TRUNC (SYSDATE) A
         FROM
           dual
       ) SELECT
         *
       FROM
         tabname
       ORDER BY
         DECODE (MODE, 'FIFO', 1 ,- 1) * TO_CHAR (rq, 'yyyymmddhh24miss')

    //   floor((date2-date1) /365) 作为年     
    //  floor((date2-date1, 365) /30) 作为月     
    //  d(mod(date2-date1, 365), 30)作为日.

     

    20.next_day函数

     代码如下:

    //返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日
    next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。     
    // 1  2  3  4  5  6  7     
    //日 一 二 三 四 五 六   
    select (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from dual
    //日期 返回的是天 然后 转换为ss

     

    21,round[舍入到最接近的日期](day:舍入到最接近的星期日)

     代码如下:

    select sysdate S1,
    round(sysdate) S2 ,
    round(sysdate,'year') YEAR,
    round(sysdate,'month') MONTH ,
    round(sysdate,'day') DAY from dual

     

    22,trunc[截断到最接近的日期,单位为天] ,返回的是日期类型

     

     代码如下:

    select sysdate S1,                    
      trunc(sysdate) S2,                 //返回当前日期,无时分秒
      trunc(sysdate,'year') YEAR,        //返回当前年的1月1日,无时分秒
      trunc(sysdate,'month') MONTH ,     //返回当前月的1日,无时分秒
      trunc(sysdate,'day') DAY           //返回当前星期的星期天,无时分秒
    from dual

     

    23,返回日期列表中最晚日期

     

     代码如下:

    select greatest('01-1月-04','04-1月-04','10-2月-04') from dual

     

    24.计算时间差

     代码如下:

    注:oracle时间差是以天数为单位,所以换算成年月,日
     select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
     'yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual        //时间差-年
     select ceil(moths_between(sysdate-to_date('2007-11-02 15:55:03',
     'yyyy-mm-dd hh24:mi:ss'))) as spanMonths from dual           //时间差-月
     select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
     'yyyy-mm-dd hh24:mi:ss'))) as spanDays from dual             //时间差-天
     select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
     'yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual         //时间差-时
     select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
     'yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual    //时间差-分
     select floor(to_number(sysdate-to_date('2007-11-02 15:55:03',
     'yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual //时间差-秒

     

    25.更新时间

     代码如下:

    //oracle时间加减是以天数为单位,设改变量为n,所以换算成年月,日
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),
       to_char(sysdate+n*365,'yyyy-mm-dd hh24:mi:ss') as newTime from dual        //改变时间-年
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),
        add_months(sysdate,n) as newTime from dual                                 //改变时间-月
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),
        to_char(sysdate+n,'yyyy-mm-dd hh24:mi:ss') as newTime from dual            //改变时间-日
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),
        to_char(sysdate+n/24,'yyyy-mm-dd hh24:mi:ss') as newTime from dual         //改变时间-时
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),
        to_char(sysdate+n/24/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual      //改变时间-分
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),
        to_char(sysdate+n/24/60/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual   //改变时间-秒

     

    26.查找月的第一天,最后一天

    代码如下:

    SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
           Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
           Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
           LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
    FROM dual;
    展开全文
  • Extjs中Date详解

    千次阅读 2012-05-03 17:19:54
    Extjs对Date对象进行了进一步的封装,主要提供了对日期的格式解析, 日期的format定义如下: 年 Y 年的数字表示,4位数字,例如1999 y 年的两位数字表示,例如99或03 o ISO-8601年的数字表示(与Y相同,但是...
  • js Date详解:创建日期以及日期API

    千次阅读 2019-06-14 16:33:19
    什么是: 封装一个时间,提供操作时间的API 何时: 只要存储时间,都要用Date对象 如何: 创建: 4种: 1. 创建日期对象,并自动获得当前客户端系统时间... var now=new Date(); 2.... var date=new Date("yyyy/MM/dd...
  • v_hour=`date -d "20170701 08:05:00" +%H` v_min=`date -d "20170701 08:05:00" +%M` echo "v_hour is ${v_hour}" echo "v_min is ${v_min}" ## 转换成10进制,才能计算 let v_hour=10#${v_hour} let v_min=10#${v...
  • ES6 Date对象详解

    万次阅读 2017-02-20 15:42:09
    ES6 Date对象详解 Date对象详解,创建对象 let date = new Date();1.基本方法调用 年月日,时分秒,毫秒的基本方法的调用,getYear 和getFullYear的区别 //getYear获取的时间如果小于1900,那就要加上1900 //比
  • linux date 命令详解

    2017-03-06 21:46:23
    date 命令详解
  • date命令详解

    千次阅读 2020-03-18 11:17:35
    date 命令功能:date 可以用来显示或设定系统的日期与时间。 命令参数 -d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号; -s<字符串>:根据字符串来设置日期与时间。字符串前后必须...
  • Date详解

    千次阅读 2016-12-12 00:03:21
    今天阅读了Date的API文档,这这里做一下总结: Date 是表示时间实例的一个类,它的精度为毫秒。 year 年份由一个整型数(Integer)来表示 --- 例 从1900 开始, 如果整数为20就代表 1920年 month 月份由一个整型...
  • Linux--Date命令详解

    2016-07-19 08:23:47
    date命令的帮助信息 [root@localhost source]# date –help 用法:date [选项]… [+格式]  或:date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]] 以给定的格式显示当前时间,或是设置系统日期。-d,–date...
  • SHELL DATE 命令详解

    千次阅读 2018-05-05 14:03:04
    使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]] 说明 : date 可以用来显示或设定系统的日期与...
  • Shell date 命令详解

    千次阅读 2018-08-22 19:04:24
    格式: date [选项] ... [+格式] 选项说明:  -d ,--date=字符串 显示指定字符串所描述的时间 格式说明:   例子1: #!/bin/bash ##1. 获取当前系统时间 YYYY-MM-DD HH:MM:SS v_time_eq=`date &...
  • linux date格式详解

    千次阅读 2018-05-05 10:30:50
    Linux date 格式化时间和日期[root@linuxidc ~]# date -d today +"%Y-%m-%d" 2016-11-26 [root@linuxidc ~]# date -d today +"%Y_%-m_%-d"2008_5_7 [root@linuxidc ~]# date -d today +"...
  • Java Date详解

    千次阅读 2012-09-27 14:26:12
    Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。 1、使用Date类代表...
  • javascript JS Date 时间详解

    千次阅读 2018-06-08 15:42:12
    &lt;script type="text/javascript"... myDate.getDate() //从 Date 对象返回一个月中的某一天 (1 ~ 31)。 myDate.getDay() //从 Date 对象返回一周中的某一天 (0 ~ 6)。 myDate.getFullY...
  • django date参数详解

    千次阅读 2018-05-29 10:42:08
    date根据给定格式对一个日期变量进行格式化。可用的格式字符串:格式化字符描述示例输出a'a.m.'或'p.m.''a.m.'A'AM'或'PM''AM'b月份,文字形式,3个字母,小写。“jan”B未实现。 cISO 8601格式2008-01-02T10:30:00...
  • Daterangepicker 参数详解

    万次阅读 2017-10-23 15:26:31
    Daterangepicker 参数详解
  • Linux命令之——Date命令详解

    千次阅读 2015-06-17 21:26:13
    date命令的帮助信息  [root@localhost source]# date --help 用法:date [选项]... [+格式]  或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] 以给定的格式显示当前时间,或是设置系统日期。  -d,--...
  • java 中 date类型详解

    千次阅读 2017-03-22 15:22:22
    Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;  Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等于时,返回false;  如果业务数据存在相等的时候,而且相等时...
  • date日期命令详解1. date的作用2. date的标记2.1 时间方面2.2 日期方面3. date设定时间4. date的参数说明5. date的实例6. 时间日期的设置6.1 时区的显示与设置6.2 时间的调整 1. date的作用 在命令行直接输入date,...
  • Elasticsearch date 类型详解

    千次阅读 2018-11-23 11:22:56
    一直对 elasticsearch 中的 date 类型认识比较模糊,而且在使用中又比较常见,这次决定多花些时间,彻底弄懂它,希望能对用到的同学提供帮助。 注意:本文测试使用是 elasticsearch 6.3 版本,其他版本规则可能有所...
  • linux的date用法详解

    2011-09-14 11:16:46
    原文地址: http://hi.baidu.com/lzpsky/blog/item/294f30ef61cd6f10fcfa3c03.html #man date可以看到date的help文件 #date 获取当前时间 #date -d "-1 week" +%Y
  • Elasticsearch 详解mapping之date
  • SwiftDate日期库使用详解

    千次阅读 2019-07-01 17:18:33
    SwiftDate日期库使用详解 一、基本介绍 1、什么是SwiftDate? (1) SwiftDate是一个使用Swift语言编写的Date的封装库,使用它可以很方便的对日期进行处理,方便我们工程对日期显示的格式需求。 (2) SwiftDate功能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,127
精华内容 44,050
关键字:

date详解