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);#p#
–获取当前日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”)));
db2数据库to_char函数如何把时间格式化为yyyymmdd hh24,时间格式怎么写?
SELECTTO_CHAR(CURRENT_TIMESTAMP,YYYYMMDDHH24)1;
sql时间函数问题
用函数:依次判断当前记录的时间之后的每一天是否为工作日,是的话天数就加1直至达到你想要的天数,然后用获得的日期与当前时间相比函数大致应该是这样的:CREATE FUNCTION getCustomDate(@dSourceDate DateTime,@iAddDays int)returns DATETIMEASBEGIN DECLARE @i INT DECLARE @k INT DECLARE @m INT SET @i = 0 SET @k = 0 WHILE (@k < @iAddDays) BEGINSET @i =@i + 1SET @m = DATEPART(dw,DATEADD(day,@i,@dSourceDate))IF NOT (@m = 1 OR @m = 7) SET @k = @k + 1 END RETURN DATEADD(day,@i,@dSourceDate)END使用时:SELECT (2010-02-19,2)获得的应该是 2010-02-23对应数据库时,只要把时间换成对应的数据表字段就可以了
SQL Server 中时间函数
DATEADD在向指定日期加上一段时间的基础上,返回新的 datetime 值。 语法DATEADD ( datepart , number, date )DATEDIFF返回跨两个指定日期的日期和时间边界数。 语法DATEDIFF ( datepart , startdate , enddate ) DATEPART返回代表指定日期的指定日期部分的整数。 语法DATEPART ( datepart , date ) DATENAME返回代表指定日期的指定日期部分的字符串。 语法DATENAME ( datepart , date )比较 DATEADD 和 DATEDIFFDATEADD 函数向指定日期添加一段时间间隔。 例如,如果 titles 表中所有书籍的发行日期都推迟三天,则可使用以下语句获得新的发行日期:USE pubsSELECT DATEADD(day, 3, pubdate)FROM titles如果日期参数的数据类型是 smalldatetime,则结果的数据类型也是 smalldatetime。 可以使用 DATEADD 对 smalldatetime 值添加秒或毫秒,但只有当 DATEADD 返回的结果日期至少改变了 1 分钟时,这样做才有意义。 DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期之间各日期部分相差的时间量。 换句话说,它得出两个日期之间的间隔。 结果是等于 date2 - date1 的带符号整数值,以各日期部分为单位。 在向指定日期加上一段时间的基础上,返回新的 datetime 值。 语法DATEADD ( datepart , number, date )DATEDIFF返回跨两个指定日期的日期和时间边界数。 语法DATEDIFF ( datepart , startdate , enddate ) DATEPART返回代表指定日期的指定日期部分的整数。 语法DATEPART ( datepart , date ) DATENAME返回代表指定日期的指定日期部分的字符串。 语法DATENAME ( datepart , date )比较 DATEADD 和 DATEDIFFDATEADD 函数向指定日期添加一段时间间隔。 例如,如果 titles 表中所有书籍的发行日期都推迟三天,则可使用以下语句获得新的发行日期:USE pubsSELECT DATEADD(day, 3, pubdate)FROM titles如果日期参数的数据类型是 smalldatetime,则结果的数据类型也是 smalldatetime。 可以使用 DATEADD 对 smalldatetime 值添加秒或毫秒,但只有当 DATEADD 返回的结果日期至少改变了 1 分钟时,这样做才有意义。 DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期之间各日期部分相差的时间量。 换句话说,它得出两个日期之间的间隔。 结果是等于 date2 - date1 的带符号整数值,以各日期部分为单位。 下面的查询使用日期 1995 年 11 月 30 日,并得出 pubdate 和该日期之间相差的天数。 USE pubsSELECT DATEDIFF(day, pubdate, Nov 30 1995)FROM titles对于 titles 中 pubdate 为 1995 年 10 月 21 日的行,上述查询生成的结果为 40。 (10 月 21 日和 11 月 30 日之间相差 40 天。 )要计算以月为单位的间隔,请使用以下查询:USE pubsSELECT interval = DATEDIFF(month, pubdate, Nov 30 1995)FROM titles该查询对 pubdate 值在 10 月的行生成的值为 1,对 pubdate 值在 6 月的行生成的值为 5。 若 DATEDIFF 函数中的第一个日期晚于指定的第二个日期,则产生的结果为负数。 由于 titles 中有两行使用 GETDATE 函数指派 pubdate 的值,所以这些值被设置为 pubs 数据库的创建日期,这样在前面的两个查询中这两行返回负数。 如果一个或两个日期参数是 smalldatetime 值,它们将在内部转换为 datetime 值进行计算。 为了进行计算,smalldatetime 值中的秒和毫秒将自动设置为 0。 比较 DATEPART 和 DATENAMEDATEPART 和 DATENAME 函数将 datetime 值的指定部分(年、季度、天、小时等)生成为整数值或 ASCII 字符串。 由于 smalldatetime 只能精确到分钟,所以在这两个函数中使用 smalldatetime 值时,返回的秒和毫秒部分总是为零。 下面的示例假定日期为 5 月 29 日:SELECT DATEPART(month, GETDATE())下面是结果集:------------5(1 row(s) affected)SELECT DATENAME(month, GETDATE())下面是结果集:------------May(1 row(s) affected)具体可以参考SQL Server联机丛书(安装SQLServer时自动的帮助)
发表评论