SQL 日期和时间函数
标签(空格分隔): SQL DB2
SQL 日期和时间函数
函数名 | 含义 |
---|---|
DAYNAME | 返回一个大小写混合的字符串,对于参数的日部分,用星期表示这一天的名称(例如,Friday)。 |
DAYOFWEEK | 返回参数中的星期几,用范围在 1-7 的整数值表示,其中 1 代表星期日。 |
DAYOFWEEK_ISO | 返回参数中的星期几,用范围在 1-7 的整数值表示,其中 1 代表星期一。 |
DAYOFYEAR | 返回参数中一年中的第几天,用范围在 1-366 的整数值表示。 |
DAYS | 返回日期的整数表示。 |
JULIAN_DAY | 返回从公元前 4712 年 1 月 1 日(儒略日历的开始日期)到参数中指定日期值之间的天数,用整数值表示。 |
MIDNIGHT_SECONDS | 返回午夜和参数中指定的时间值之间的秒数,用范围在 0 到 86400 之间的整数值表示。 |
*MONTHNAME | 对于参数的月部分的月份,返回一个大小写混合的字符串(例如,January)。 |
TIMESTAMP_ISO | 根据日期、时间或时间戳记参数而返回一个时间戳记值。 |
TIMESTAMP_FORMAT | 从已使用字符模板解释的字符串返回时间戳记。 |
TIMESTAMPDIFF | 根据两个时间戳记之间的时差,返回由第一个参数定义的类型表示的估计时差。 |
TO_CHAR | 返回已用字符模板进行格式化的时间戳记的字符表示。TO_CHAR 是 VARCHAR_FORMAT 的同义词。 |
TO_DATE | 从已使用字符模板解释过的字符串返回时间戳记。TO_DATE 是 TIMESTAMP_FORMAT 的同义词。 |
WEEK | 返回参数中一年的第几周,用范围在 1-54 的整数值表示。以星期日作为一周的开始。 |
WEEK_ISO | 返回参数中一年的第几周,用范围在 1-53 的整数值表示。 |
示例
--获取当前日期:
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);
values VARCHAR_FORMAT(current TIMESTAMP,'yyyy-mm-dd');
values char(current date);
values time(current timestamp);
--执行日期和时间的计算
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')));