码迷,mamicode.com
首页 > 数据库 > 详细

数仓面试|四个在工作后才知道的SQL密技

时间:2020-08-08 00:41:54      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:order by   url   osi   ida   set   图片   比较   insert   subquery   

Date类(日期类)、DateFormat类(对日期类转换为文本)、Calendar类(日历类)--常用类

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

1000毫秒 = 1秒

日期和毫秒可以相互转换

日期-->毫秒:从1970年1月1日00:00:00到当前日期,一共经历了多少毫秒

毫秒-->日期:1天 = 24 x 60 x 60 = 86400秒 = 86400 x 1000 = 86400000毫秒

构造方法:
public Date()//生成当前系统到1970年1月1日00:00:00之间的毫秒数----生成当前系统的时间
public Date(long date)//生成从1970年1月1日00:00:00,过了date参数毫秒的时间对象---生成特定时间,注意date类型为long    

常用成员方法:
public long getTime()//返回自1970年1月1日00:00:00的毫秒数
DateFormat类---对日期进行格式化

java.text public abstract class DateFormat extends Format 是日期/时间格式的子类的抽象父类

作用:格式化(即,日期→文本),解析(文本→日期)

成员方法:
public final String format(Date date)//将日期转化为字符串
public Date parse(String source)//将字符串解析为日期

DateFormat类为一个抽象类,无法创建对象使用,需用到它的实现子类SimpleDateFormat

SimpleDateFormat类extends DateFormat

java.text.SimpleDateFormat extends DateFormat

构造方法:

public SimpleDateFormat(String pattern)
    /*使用给定的模式和默认的默认日期格式来创建SimpleDateFormat 对象
      参数:pattern  传递指定的日期格式
      格式:区分大小写
      y   年
      M   月
      d   日
      H   时
      m   分
      s  秒
      对应的格式,会把格式替换成对应的日期和时间
      "yyyy-MM--dd HH:mm:ss"
      注意:模式中的字母不可更改,但连接符可更改
      "yyyy年MM月dd日 HH时mm分ss秒" 也行
    */

用父类DateFormat 中方法来讲文本和日期之间相互转化

public final String format(Date date)//将日期转化为字符串
public Date parse(String source)//将字符串解析为日期
package commonclass;

import java.text.FieldPosition;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSimpleDateFormat01 {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
        String format = simpleDateFormat.format(new Date());
        System.out.println(format);

        Date parse = simpleDateFormat.parse("2020年08月08日17时01分53秒");//这儿的source格式必须与“yyyy年MM月dd日HH时mm分ss秒”格式相对应,否则会抛出ParseException
        System.out.println(parse);

    }
}

练习:

package commonclass;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

//计算一个人出生了多少天
/*思路
* 1.计算当前时间的毫秒数
* 2.计算出生时间的毫秒数
* 3.两者相减,再/1000/60/60/24*/
public class PracticeSimpleDateFormat01 {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();//1.当前时间毫秒数
        System.out.println(date.getTime());

        //2.计算出生时间的毫秒数
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入出生年月日,yyyy年MM月dd日HH时mm分ss秒");
        String strDate = scanner.next();

        Date birth = simpleDateFormat.parse(strDate);
        System.out.println(birth.getTime());

        int days = (int) ((date.getTime() - birth.getTime())/1000/60/60/24);
        System.out.println("你从出生到现在共活了"+days+"天");

    }
}
Calendar类---日历类

java.until.Calendar类是一个抽象类,里面提供了许多操作日历字段的方法(如YEAR , MONTH , DAY_OF_MONTH , HOUR )

由于calendar类是一个抽象类,无法直接创建对象

但calendar类里面有一个静态方法,public static Calendar getInstance(),可以直接创建calendar类的子类对象。

Calendar类中常用的成员方法
public int get(int field)//返回给定的日历字段的值
public void set(int field, int value)//设置特定的日历字段值
public final void set(int year, int month, int date)//设置日历的年、月、日
abstract public void add(int field, int amount)//加上或减去指定的时间到指定日历字段,amount可以是正负
public final Date getTime()//将日历对象转换为日期对象
 /*参数:field
 是Calendar类中的静态成员变量
 比如 public final static int YEAR = 1;
     public final static int MONTH = 2;
     public final static int DATE = 5;
     等等等,有好多,可以在Calendar类中查找
 */
 
package commonclass;

import java.util.Calendar;
import java.util.Date;

public class TestCalendar01 {
    public static void main(String[] args) {
        //生成calendar对象
        Calendar c = Calendar.getInstance();

        //设置calendar字段
        c.set(Calendar.YEAR,2000);

        //增加或减少calendar指定字段的值
        c.add(Calendar.MONTH,-1);//西方月份0-11月,东方月份1-12月

        System.out.println(c);//java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2000,MONTH=6,WEEK_OF_YEAR=33,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=221,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=22,SECOND=45,MILLISECOND=446,ZONE_OFFSET=28800000,DST_OFFSET=0]


        //将日历对象转化为日期对象
        Date date = c.getTime();
        System.out.println(date);//Sat Jul 08 21:22:45 CST 2000
    }
}

数仓面试|四个在工作后才知道的SQL密技

标签:order by   url   osi   ida   set   图片   比较   insert   subquery   

原文地址:https://blog.51cto.com/12729470/2517815

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!