SQLSERVER 时间篇:*************************************************************
一、时间函数 --getdate 获取当前时间 select getdate() --dateadd 原有时间加: 2013-02-17 13:20:16 此时间加12个月 select dateadd(MONTH,12,'2013-02-17 13:20:16') --返回:2014-02-17 13:20:16.000 (参数month可以改为 day,year等日期加相应的值) --datediff 两个时间的差 (后面-前面=返回值) select datediff(day,'2013-02-01','2013-02-18') --返回:17 (参数day可以改为 month,year等日期加相应的值) --datepart 获取日期的某个部分整数 select DATEPART(month, '2013-2-17') --返回 2 (参数month可以改为 day,year等日期加相应的值) --datename 获取指定部位的字符串 select datename(weekday, '2013-2-17') --返回 星期日 (参数weekday可以改为 day,year等日期加相应的值) --day(), month(),year() 获取指定部位的字符串 select day('2013-2-15') --返回15二、时间格式转换 select CONVERT(varchar, getdate(), 120 ) --返回 2013-02-17 13:37:54 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') --返回 20130217133828 select CONVERT(varchar(12) , getdate(), 111 ) --返回 2013/02/17 select CONVERT(varchar(12) , getdate(), 112 ) --返回 20130217 select CONVERT(varchar(12) , getdate(), 102 ) --返回 2013.02.17 select CONVERT(varchar(12) , getdate(), 101 ) --返回 02/17/2013 select CONVERT(varchar(12) , getdate(), 103 ) --返回 17/02/2013 select CONVERT(varchar(12) , getdate(), 104 ) --返回 17.02.2013 select CONVERT(varchar(12) , getdate(), 105 ) --返回 17-02-2013 select CONVERT(varchar(12) , getdate(), 106 ) --返回 17 02 2013 select CONVERT(varchar(12) , getdate(), 107 ) --返回 02 17, 2013 select CONVERT(varchar(12) , getdate(), 108 ) --返回 13:42:50 select CONVERT(varchar(12) , getdate(), 109 ) --返回 02 17 2013 select CONVERT(varchar(12) , getdate(), 110 ) --返回 02-17-2013 select CONVERT(varchar(12) , getdate(), 113 ) --返回 17 02 2013 1 select CONVERT(varchar(12) , getdate(), 114 ) --返回 13:42:24:743三、时间格式与其他格式转换 将int转换为时间:convert(datetime,left(DATEid,8),101) 将时间转换为int: year(CreateDate)*10000 + month(CreateDate)*100 + day(CreateDate) 将时间格式[2014-07-24 10:32:43.197]转换为int20140724:select cast(replace(convert(char(10),GETDATE(),120),'-','') as int)SQLSERVER 函数篇: ************************************************************* 一、字符函数ascii(字符串表达式)char(整数表达式)charindex(字符串表达式 1, 字符串表达式2[,整数表达式])difference(字符串表达式 1,字符串表达式 2)left(字符串表达式,整数表达式)right(字符串表达式,整数表达式)len(字符串表达式)lower(字符串表达式)upper(字符串表达式)ltrim(字符串表达式)rtrim(字符串表达式)patindex(字符串表达式 1,字符串表达式 2)reverse(字符串表达式)space(整数表达式)str(float 型小数[,总长度[,小数点后保留的位数]])stuff (字符串表达式 1,开始位置,长度,字符串表达式 2)substring(字符串表达式,开始位置,长度)replace(字符串表达式 1,字符串表达式 2,字符串表达式 3)二、数学函数abs(数值表达式)cos(浮点表达式)sin(浮点表达式)cot(浮点表达式)ceiling(数值表达式)floor(数值表达式)rand([整数表达式])round(数值表达式[,长度[,操作方式]])三、日期函数dateadd(日期部分,数字,日期)datediff(日期部分,开始日期,结束日期)datename(日期部分,日期)datepart(日期部分,日期)day(日期) month (日期) year (日期)四、转换函数convert(数据类型[(长度)],表达式[,样式])cast(表达式 as 数据类型[(长度)])getdate()五、系统和功能函数select newid()isnumeric(任意表达式)isdate(任意表达式) ----------------------------------------------------------------------------ORACLE 时间篇:*************************************************************一、当前时间拆分: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,'day') 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; //获取时间的秒select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual二、当前时间自身计算:当前时间减去 7 分钟的时间select sysdate,sysdate - interval '7' MINUTE from dual当前时间减去 7 小时的时间select sysdate - interval '7' hour from dual当前时间减去 7 天的时间select sysdate - interval '7' day from dual当前时间减去 7 月的时间select sysdate,sysdate - interval '7' month from dual当前时间减去 7 年的时间select sysdate,sysdate - interval '7' year from dual 三、当前时间其他计算:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒): 天: ROUND(TO_NUMBER(sysdate - START_DATE)) 小时: ROUND(TO_NUMBER(sysdate - START_DATE) * 24) 分钟: ROUND(TO_NUMBER(sysdate - START_DATE) * 24 * 60) 秒: ROUND(TO_NUMBER(sysdate - START_DATE) * 24 * 60 * 60) 毫秒: ROUND(TO_NUMBER(sysdate - START_DATE) * 24 * 60 * 60 * 1000)四、当前时间转换时间转换为char:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; char转换为时间:select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dualORACLE 函数篇: *************************************************************一、字符函数lower(char):将字符串转化为小写的格式。upper(char):将字符串转化为大写的格式。length(char):返回字符串的长度。substr(char, m, n):截取字符串的子串,n代表取n个字符的意思,不是代表取到第n个replace(char1, search_string, replace_string)instr(C1,C2,I,J) -->判断某字符或字符串是否存在,存在返回出现的位置的索引,否则返回小于1;在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串C2 希望搜索的字符串I 搜索的开始位置,默认为1J 出现的位置,默认为1二、数学函数round(n,[m]) 该函数用于执行四舍五入trunc(n,[m]) 该函数用于截取数字。mod(m,n)取余函数floor(n) 返回小于或是等于n的最大整数ceil(n) 返回大于或是等于n的最小整数abs(n) 返回数字n的绝对值三、日期函数sysdate 返回系统时间add_months函数 可以得到某一时间之前或之后n个月的时间last_day(d) 返回指定日期所在月份的最后一天四、转换函数to_date()函数to_char()函数五、系统和功能函数1)terminal:当前会话客户所对应的终端的标示符,如计算机名2)language: 语言3)db_name: 当前数据库名称4)nls_date_format: 当前会话客户所对应的日期格式5)session_user: 当前会话客户所对应的数据库用户名6)current_schema: 当前会话客户所对应的默认方案名7)host: 返回数据库所在主机的名称Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-182.select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天.3.select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第一天4.select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年月日5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第一天6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41 8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确/***************数字********************//*TRUNC(number,num_digits)Number 需要截尾取整的数字。Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。TRUNC()函数截取时不进行四舍五入*/9.select trunc(123.458) from dual --12310.select trunc(123.458,0) from dual --12311.select trunc(123.458,1) from dual --123.412.select trunc(123.458,-1) from dual --12013.select trunc(123.458,-4) from dual --014.select trunc(123.458,4) from dual --123.45815.select trunc(123) from dual --12316.select trunc(123,1) from dual --12317.select trunc(123,-1) from dual --120-------------------------------------------------DB2: --获取当前日期: select current date from sysibm.sysdummy1; values current date; --获取当前日期 select current time from sysibm.sysdummy1; values current time; --获取当前时间戳 select current timestamp from sysibm.sysdummy1; values current timestamp; --要使当前时间或当前时间戳记调整到 GMT/CUT,则把当前的时间或时间戳记减去当前时区寄存器: values current time -current timezone; values current timestamp -current timezone; --获取当前年份 values year(current timestamp); --获取当前月 values month(current timestamp); --获取当前日 values day(current timestamp); --获取当前时 values hour(current timestamp);--获取分钟 values minute(current timestamp); --获取秒 values second(current timestamp); --获取毫秒 values microsecond(current timestamp); --从时间戳记单独抽取出日期和时间 values date(current timestamp); 07/24/14 values VARCHAR_FORMAT(current TIMESTAMP,'yyyy-mm-dd'); values char(current date); 2014-07-24-10.46.51.978540 values time(current timestamp); 10:47:25--执行日期和时间的计算 values current date+1 year; values current date+3 years+2 months +15 days; values current time +5 hours -3 minutes +10 seconds; --计算两个日期之间的天数 values days(current date)- days(date('2010-02-20')); --时间和日期换成字符串 values char(current date); values char(current time); --要将字符串转换成日期或时间值 values timestamp('2010-03-09-22.43.00.000000'); values timestamp('2010-03-09 22:44:36'); values date('2010-03-09'); values date('03/09/2010'); values time('22:45:27'); values time('22.45.27'); --计算两个时间戳记之间的时差: --秒的小数部分为单位 values timestampdiff(1,char(current timestamp - timestamp('2010-01-01-00.00.00'))); --秒为单位 values timestampdiff(2,char(current timestamp - timestamp('2010-01-01-00.00.00'))); --分为单位 values timestampdiff(4,char(current timestamp - timestamp('2010-01-01-00.00.00'))); --小时为单位 values timestampdiff(8,char(current timestamp - timestamp('2010-01-01-00.00.00'))); --天为单位 values timestampdiff(16,char(current timestamp - timestamp('2010-01-01-00.00.00'))); --周为单位 values timestampdiff(32,char(current timestamp - timestamp('2010-01-01-00.00.00'))); --月为单位 values timestampdiff(64,char(current timestamp - timestamp('2010-01-01-00.00.00'))); --季度为单位 values timestampdiff(128,char(current timestamp - timestamp('2010-01-01-00.00.00'))); --年为单位 values timestampdiff(256,char(current timestamp - timestamp('2010-01-01-00.00.00'))); 将时间转换为int:CAST(TO_CHAR(IN_DATE,'YYYYMMDD') AS INT) AS DATEID