sql计算时间差 sql面试必会6题经典-万象-

sql计算时间差 sql面试必会6题经典

牵着乌龟去散步 万象 1 0

大家好,如果您还对sql计算时间差不太了解,没有关系,今天就由本站为大家分享sql计算时间差的知识,包括sql面试必会6题经典的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

  1. ORACEL sql语句 两时间字段求差
  2. sql 怎么计算两个时间的天数
  3. 用SQL语句判断两个时间 差>24小时
  4. 请问mysql的sql中如何计算两个datetime的差,精确到小时,谢谢

一、ORACEL sql语句 两时间字段求差

两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒):

ROUND(TO_NUMBER(END_DATE- START_DATE))

ROUND(TO_NUMBER(END_DATE- START_DATE)* 24)

ROUND(TO_NUMBER(END_DATE- START_DATE)* 24* 60)

ROUND(TO_NUMBER(END_DATE- START_DATE)* 24* 60* 60)

ROUND(TO_NUMBER(END_DATE- START_DATE)* 24* 60* 60* 1000)

Oracle计算时间差函数 2008-08-20 10:00两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒):天: ROUND(TO_NUMBER(END_DATE- START_DATE))小时: ROUND(TO_NUMBER(END_DATE- START_DATE)* 24)分钟: ROUND(TO_NUMBER(END_DATE- START_DATE)* 24* 60)秒: ROUND(TO_NUMBER(END_DATE- START_DATE)* 24* 60* 60)毫秒: ROUND(TO_NUMBER(END_DATE- START_DATE)* 24* 60* 60* 1000)

select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH24:mi:ss') from dual;

select to_date('2007-06-28 19:51:20','yyyy-MM-dd HH:mm:ss') from dual;

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;

DAY天的名字,使用空格填充到 9个字符

YYY,YY,Y年份的最后三位,两位,一位

WW年中的第几个星期 1.日期时间间隔 *** 作

select sysdate,sysdate- interval'7' MINUTE from dual

select sysdate- interval'7' ho *** from dual

select sysdate- interval'7' day from dual

select sysdate,sysdate- interval'7' month from dual

select sysdate,sysdate- interval'7' year from dual

select sysdate,sysdate- 8*interval'2' ho *** from dual

select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual

select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual

select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual

参考 oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)

select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual

具体用法和上面的 to_char差不多。

使用TO_NUMBER函数将字符转换为数字

TO_NUMBER(char[,'格式'])

DAY天的名字,使用空格填充到9个字符

YYY,YY,Y年份的最后三位,两位,一位

WW年中的第几个星期 1.日期时间间隔 *** 作

select sysdate,sysdate- interval’7’ MINUTE from dual

select sysdate- interval’7’ ho *** from dual

select sysdate- interval’7’ day from dual

select sysdate,sysdate- interval’7’ month from dual

select sysdate,sysdate- interval’7’ year from dual

select sysdate,sysdate- 8*interval’2’ ho *** from dual

select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual

select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dual

select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dual

select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual

参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)

select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual

具体用法和上面的to_char差不多。

select trunc(sysdate,’YEAR’) from dual

select trunc(sysdate) from dual

select to_char(trunc(sysdate,’YYYY’),’YYYY’) from dual

--返回当前时间年月日小时分秒毫秒

sql计算时间差 sql面试必会6题经典-第1张图片-

select to_char(c *** rent_timestamp(5),’DD-MON-YYYY HH24:MI:SSxFF’) from dual;

--返回当前时间的秒毫秒,可以指定秒后面的精度(更大=9)

select to_char(c *** rent_timestamp(9),’MI:SSxFF’) from dual;

l_dummy all_objects.object_name%type;

l_start number default dbms_utility.get_time;

open l_rc for'select object_name from all_objects'||'where object_id='|| i;

dbms_output.put_line( round((dbms_utility.get_time-l_start)/100, 2)||' seconds...');

二、sql 怎么计算两个时间的天数

sql怎么计算两个时间的天数

select datediff(part,StartDate,EndDate)

select datediff(part,StartDate,EndDate)

part:日期的哪一部分计算差额的引数

如:select datediff(dd,'2010-09-20','2010-09-21')

select datediff(mm,'2010-09-20','2010-09-21')

注意,A1的日期在小于B1的日期,要不出错

DateFor *** t df= new SimpleDateFor *** t("yyyy-MM-dd HH:mm:ss");

Date d1= df.parse("2004-03-26 13:31:40");

Date d2= df.parse("2004-01-02 11:30:24");

long diff= d1.getTime()- d2.getTime();

long days= diff/(1000* 60* 60* 24);

SimpleDateFor *** t df= new SimpleDateFor *** t("yyyy-MM-dd HH:mm:ss");

j *** a.util.Date now= df.parse("2004-03-26 13:31:40");

j *** a.util.Date date=df.parse("2004-01-02 11:30:24");

long l=now.getTime()-date.getTime();

long ho *** =(l/(60*60*1000)-day*24);

long min=((l/(60*1000))-day*24*60-ho *** *60);

long s=(l/1000-day*24*60*60-ho *** *60*60-min*60);

System.out.println(""+day+"天"+ho *** +"小时"+min+"分"+s+"秒");

SimpleDateFor *** t dfs= new SimpleDateFor *** t("yyyy-MM-dd HH:mm:ss");

j *** a.util.Date begin=dfs.parse("2004-01-02 11:30:24");

j *** a.util.Date end= dfs.parse("2004-03-26 13:31:40");

long beeen=(end.getTime()-begin.getTime())/1000;除以1000是为了转换成秒

long ho *** 1=beeen%(24*3600)/3600;

System.out.println(""+day1+"天"+ho *** 1+"小时"+minute1+"分"+second1+"秒");

*** 挺多的,能有你要的结果就行。

:blog. *** dn./xianfajushi/article/details/4570876

2.单击右键(或使用选单“格式”),设定单元格的格;

3.选择“数字”标签中的“分类”为“日期”;

4.再选择“数字”标签中的“型别”为一带日期的时间型别;

5.在其它单元格直接计算上述两个单元格的差即可

假如要计算单元格A1、B1两个时间点的天数,你首先把A1、B1这两个单元格设成日期格式,然后在你需要反映两个时间点天数的单元格中输入公式“=DATEDIF(A1,B1,"D")”即可(反映两个时间点天数的单元格的格式设成数值或文字)。如果你要计算A1中的日期到当前日的天数你把公式中的B1改成TODAY()。

public string getTimeSpan(DateTime startTime, DateTime endTime)

TimeSpan ts= endTime- startTime;

int tYear= endTime.Year-startTime.Year-((startTime.Month>endTime.Month)?1:0);

int tMonth= endTime.Year* 12+ endTime.Month- startTime.Year* 12- startTime.Month;

int tDay=(endTime.Day>startTime.Day)?(endTime.Day-startTime.Day):(30+endTime.Day-startTime.Day);不完善,可以改进。。。

ret *** n tYear.toString()+"年"+tMonth.toString()+"月"+ tDay+"天";

DateDiff(interval, date1, date2 [,firstdayofweek[, firseekofyear]])

DateDiff函式的语法有以下引数:

interval必选。String expression表示用于计算 date1和 date2之间的时间间隔。有关数值,请参阅“设定”部分。

date1, date2必选。日期表示式。用于计算的两个日期。

firstdayofweek可选。指定星期中之一天的常数。如果没有指定,则预设为星期日。有关数值,请参阅“设定”部分。

firseekofyear可选。指定一年中之一周的常数。如果没有指定,则预设为 1月 1日所在的星期。有关数值,请参阅“设定”部分。

firstdayofweek引数可以有以下值:

vbUseSystem 0使用区域语言支援(NLS) API设定。

firseekofyear引数可以有以下值:

vbUseSystem 0使用区域语言支援(NLS) API设定。

vbFirstJan1 1由 1月 1日所在的星期开始(预设)。

vbFirstFo *** Days 2由在新年中至少有四天的之一周开始。

vbFirstFullWeek 3由在新的一年中之一个完整的周开始。

DiffADate="从当天开始的天数:"& DateDiff("d", Now, theDate)

start=`date+%s-d"2011-11-28 15:55:37"`

end=`date+%s-d"2011-11-28 15:55:52"`

这个前提是能拿到开始和结束时间字串的基础上的。

如果日志档案输出格式是上述的话,还有个 *** :

stm=mktime(gensub(/[:-]/,"","g", start))

etm=mktime(gensub(/[:-]/,"","g", end))

楼上的说得没错,时间是可以直接相减的

X:=Date2-Date1; x是相差的天数

z:=x*24*60; Z就是相差的分钟数

三、用SQL语句判断两个时间 差>24小时

1、mssql的datadiff对时间的计算很不严谨啊,

2、select DATEDIFF(ho *** ,'20110101 00:22:00','20110102 00:00:00')你看看,这样也是24小时,

3、但其实是23小时多差22分钟,也就是说,这个计算的过程是忽略分和秒的影响的,看你的程序的要求了,如果只看小时,就可以,如果要考虑分钟或秒,直接是不行的

4、精确的比较要分两个部分,就是年月日一个部分,时间一个部分

5、年月日分别看年是否相同,月是否相同,这两个如果不同则肯定>24小时,在看日是否相同,如果日相同肯定<=24小时,如果日不同,select DATEDIFF(dd,'20110101 00:22:00','20110102 00:00:00')是否>=2,如果满足也肯定>24小时,如果=1就比较麻烦,还要在判断时分秒,

6、因为 select DATEDIFF(hh,'2011/01/01 00:22:00','2011/01/02 00:55:00')=24

7、 select DATEDIFF(hh,'2011/01/01 00:22:00','2011/01/02 00:00:00')=24

四、请问mysql的sql中如何计算两个datetime的差,精确到小时,谢谢

TIMES *** PDIFF(interval,datetime_expr1,datetime_expr2)

返回日期或日期时间表达式datetime_expr1和datetime_expr2the之间的整数差。

其结果的单位由interval参数给出。该参数必须是以下值的其中一个:

SELECT'年'AS`日期部分`,TIMES *** PDIFF(YEAR,'2012-12-21',CURRENT_TIMES *** P())AS`数值`

SELECT'季度'AS`日期部分`,TIMES *** PDIFF(QUARTER,'2012-12-21',CURRENT_TIMES *** P())AS`数值`

SELECT'月'AS`日期部分`,TIMES *** PDIFF(MONTH,'2012-12-21',CURRENT_TIMES *** P())AS`数值`

SELECT'日'AS`日期部分`,TIMES *** PDIFF(DAY,'2012-12-21',CURRENT_TIMES *** P())AS`数值`

SELECT'周'AS`日期部分`,TIMES *** PDIFF(WEEK,'2012-12-21',CURRENT_TIMES *** P())AS`数值`

SELECT'时'AS`日期部分`,TIMES *** PDIFF(HOUR,'2012-12-21',CURRENT_TIMES *** P())AS`数值`

SELECT'分'AS`日期部分`,TIMES *** PDIFF(MINUTE,'2012-12-21',CURRENT_TIMES *** P())AS`数值`

SELECT'秒'AS`日期部分`,TIMES *** PDIFF(SECOND,'2012-12-21',CURRENT_TIMES *** P())AS`数值`

mysql>selectCURRENT_TIMES *** P();

OK,关于sql计算时间差和sql面试必会6题经典的内容到此结束了,希望对大家有所帮助。

标签: 时间差 sql 面试 计算 经典

上一篇临汾各乡镇赶集时间表,临猗县各乡村庙会时间表

下一篇当前分类已是最新一篇

抱歉,评论功能暂时关闭!