QQ在线咨询
咨询热线
咨询热线
他们都在搜索:进入官网 备用网址 手机版入口 会员登入 app下载安装 线路检测
产品中心
联系方式
北京五月艺苑工艺美术品有限责任公司
地 址:北京五月艺苑工艺美术品有限责任公司
联系人:
手 机:
电 话:
QQ:
北京印章当前位置: 太阳城亚洲 > 北京印章

DB2 基本:日期和时刻的行使

以下为引用的内容:
SELECT current date FROM sysibm.sysdummy1SELECT current time FROM sysibm.sysdummy1SELECT current timestamp FROM sysibm.sysdummy1

sysibm.sysdummy1表是一个非凡的内存中的表,用它可以发明如上面演示的 DB2 寄存器的值。您也可以行使要害字 VALUES 来对寄存器或表达式求值。譬喻,在 DB2 呼吁行处理赏罚器(Command Line Processor,CLP)上,以下 SQL 语句显现了相同信息:

VALUES current dateVALUES current timeVALUES current timestamp

在余下的示例中,我将只提供函数或表达式,而不再一再 SELECT ... FROM sysibm.sysdummy1或行使 VALUES 子句。

要使当前时刻或当前时刻戳记调解到 GMT/CUT,则把当前的时刻或时刻戳记减去当前时区寄存器:

current time - current timezonecurrent timestamp - current timezone

给定了日期、时刻或时刻戳记,则行使恰当的函数可以单独抽取出(假如合用的话)年、月、日、时、分、秒及微秒各部门:

以下为引用的内容:
YEAR (current timestamp)MONTH (current timestamp)DAY (current timestamp)HOUR (current timestamp)MINUTE (current timestamp)SECOND (current timestamp)MICROSECOND (current timestamp)

从时刻戳记单独抽取出日期和时刻也很是简朴:

DATE (current timestamp)TIME (current timestamp)

由于没有更好的术语,以是您还可以行使英语来执行日期和时刻计较:

current date + 1 YEARcurrent date + 3 YEARS + 2 MONTHS + 15 DAYScurrent time + 5 HOURS - 3 MINUTES + 10 SECONDS

要计较两个日期之间的天数,您可以对日期作减法,如下所示:

days (current date) - days (date('1999-10-22'))

而以下示例描写了怎样得到微秒部门归零的当前时刻戳记:

CURRENT TIMESTAMP - MICROSECOND (current timestamp) MICROSECONDS

假如想将日期或时刻值与其余文内情跟尾,那么必要先将该值转换成字符串。为此,只要行使 CHAR() 函数:

char(current date)char(current time)char(current date + 12 hours)

要将字符串转换成日期或时刻值,可以行使:

以下为引用的内容:
TIMESTAMP ('2002-10-20-12.00.00.000000')TIMESTAMP ('2002-10-20 12:00:00')
       DATE ('2002-10-20')       DATE ('10/20/2002')       TIME ('12:00:00')       TIME ('12.00.00')

TIMESTAMP()、DATE() 和 TIME() 函数接管更多种名目。上面几种名目只是示例,我将把它作为一个操练,让读者本身去发明其余名目。

告诫:

摘自 DB2 UDB V8.1 SQL Cookbook,作者 Graeme Birchall(see ).

假如你在日期函数中偶尔地漏掉了引号,那将怎样呢?结论是函数会事变,但功效会堕落:

SELECT DATE(2001-09-22) FROM SYSIBM.SYSDUMMY1;

功效:

======05/24/0006

为什么会发生快要 2000 年的差距呢?当 DATE 函数获得了一个字符串作为输入参数的时辰,它会假定这是一个有用的 DB2 日期的暗示,并对其举办适内地转换。相反,当输入参数是数字范例时,函数会假定该参数值减 1 便是间隔公元第一天(0001-01-01)的天数。在上面的例子中,我们的输入是 2001-09-22,被领略为 (2001-9)-22, 便是 1970 天,于是该函数被领略为 DATE(1970)。

日期函数

偶然,您必要知道两个时刻戳记之间的时差。为此,DB2 提供了一个名为 TIMESTAMPDIFF() 的内置函数。但该函数返回的是近似值,由于它不思量闰年,并且假设每个月只有 30 天。以下示例描写了怎样获得两个日期的近似时差:

timestampdiff (<n>, char(timestamp('2002-11-30-00.00.00')-timestamp('2002-11-08-00.00.00')))

对付 <n>,可以行使以下各值来更换,以指出功效的时刻单元:

1 = 秒的小数部门

2 = 秒

4 = 分

8 = 时

16 = 天

32 = 周

64 = 月

128 = 季度

256 = 年

当日期很靠近时行使 timestampdiff() 比日期相差很大时准确。假如必要举办更准确的计较,可以行使以下要领来确按时差(按秒计):

(DAYS(t1) - DAYS(t2)) * 86400 + (MIDNIGHT_SECONDS(t1) - MIDNIGHT_SECONDS(t2))

为利便起见,还可以对上面的要领建设 SQL 用户界说的函数:

CREATE FUNCTION secondsdiff(t1 TIMESTAMP, t2 TIMESTAMP)RETURNS INTRETURN ((DAYS(t1) - DAYS(t2)) * 86400 + (MIDNIGHT_SECONDS(t1) - MIDNIGHT_SECONDS(t2)))@

假如必要确定给定年份是否是闰年,以下是一个很有效的 SQL 函数,您可以建设它来确定给定年份的天数:

以下为引用的内容:
 CREATE FUNCTION daysinyear(yr INT)RETURNS INTRETURN (CASE (mod(yr, 400)) WHEN 0 THEN 366 ELSE         CASE (mod(yr, 4))   WHEN 0 THEN         CASE (mod(yr, 100)) WHEN 0 THEN 365 ELSE 366 END         ELSE 365 END         END)@

最后,,以下是一张用于日期操纵的内置函数表。它旨在辅佐您快速确定也许满意您要求的函数,但未提供完备的参考。有关这些函数的更多信息,请参考 SQL 参考大全。

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 的整数值暗示。

改变日期名目


更新日期: 2018-05-08 18:00
编辑作者: 太阳城亚洲
文章链接:http://www.bj-wyyy.cn/beijingyinzhang/1781.html  [分享本文-DB2 基本:日期和时刻的行使]
太阳城亚洲_太阳城亚洲备用网址_太阳城亚洲官方网站 ©Copyright 2008-2018 北京五月艺苑工艺美术品有限责任公司 http://www.bj-wyyy.cn 版权所有 陕ICP备09013482号-1
Copyright © 2018年 北京五月艺苑工艺美术品有限责任公司 http://www.bj-wyyy.cn 版权所有