📄 db2 基础:日期和时间的使用 (1).htm
字号:
1 record(s) selected.
</PRE>
<P>也就是说,日期的格式是 MM/DD/YYYY. 如果想要改变这种格式,你可以通过绑定特定的 DB2 工具包来实现. 其他被支持的日期格式包括:
<TABLE cellSpacing=1 cellPadding=5 width=500 border=1>
<TBODY>
<TR vAlign=top>
<TD class=standard>DEF</TD>
<TD class=standard>使用与地区代码相匹配的日期和时间格式。</TD></TR>
<TR vAlign=top>
<TD class=standard>EUR</TD>
<TD class=standard>使用欧洲日期和时间的 IBM 标准格式。</TD></TR>
<TR vAlign=top>
<TD class=standard>ISO</TD>
<TD class=standard>使用国际标准组织(ISO)制订的日期和时间格式。</TD></TR>
<TR vAlign=top>
<TD class=standard>JIS</TD>
<TD class=standard>使用日本工业标准的日期和时间格式。</TD></TR>
<TR vAlign=top>
<TD class=standard>LOC</TD>
<TD class=standard>使用与数据库地区代码相匹配的本地日期和时间格式。</TD></TR>
<TR vAlign=top>
<TD class=standard>USA</TD>
<TD class=standard>使用美国日期和时间的 IBM 标准格式。</TD></TR></TBODY></TABLE></P>
<P>在 Windows 环境下,要将缺省的日期和时间格式转化成 ISO 格式(YYYY-MM-DD),执行下列操作:
<OL class=standard>
<LI>在命令行中,改变当前目录为 <CODE>sqllib\bnd</CODE>。
<P>例如: <BR><B>在 Windows 环境:</B> <CODE>c:\program
files\IBM\sqllib\bnd</CODE> <BR><B>在 UNIX 环境:</B>
<CODE>/home/db2inst1/sqllib/bnd</CODE> </P>
<LI>从操作系统的命令行界面中用具有 SYSADM 权限的用户连接到数据库: <PRE class=code>db2 connect to DBNAME
db2 bind @db2ubind.lst datetime ISO blocking all grant public
</PRE>
<P></P>
<P></P>(在你的实际环境中, 用你的数据库名称和想使用的日期格式分别来替换 DBNAME and ISO。)
<P></P></LI></OL>
<P>现在,你可以看到你的数据库已经使用 ISO 作为日期格式了: <PRE class=code>
values current date
1
----------
2003-05-30
1 record(s) selected.
</PRE>
<P></P><A id=5 name=5></A>
<P><STRONG class=subhead>定制日期/时间格式</STRONG></P>
<P>在上面的例子中,我们展示了如何将 DB2
当前的日期格式转化成系统支持的特定格式。但是,如果你想将当前日期格式转化成定制的格式(比如‘yyyymmdd’),那又该如何去做呢?按照我的经验,最好的办法就是编写一个自己定制的格式化函数。</P>
<P>下面是这个 UDF 的代码:</P><PRE class=code>create function ts_fmt(TS timestamp, fmt varchar(20))
returns varchar(50)
return
with tmp (dd,mm,yyyy,hh,mi,ss,nnnnnn) as
(
select
substr( digits (day(TS)),9),
substr( digits (month(TS)),9) ,
rtrim(char(year(TS))) ,
substr( digits (hour(TS)),9),
substr( digits (minute(TS)),9),
substr( digits (second(TS)),9),
rtrim(char(microsecond(TS)))
from sysibm.sysdummy1
)
select
case fmt
when 'yyyymmdd'
then yyyy || mm || dd
when 'mm/dd/yyyy'
then mm || '/' || dd || '/' || yyyy
when 'yyyy/dd/mm hh:mi:ss'
then yyyy || '/' || mm || '/' || dd || ' ' ||
hh || ':' || mi || ':' || ss
when 'nnnnnn'
then nnnnnn
else
'date format ' || coalesce(fmt,' <NULL> ') ||
' not recognized.'
end
from tmp
</PRE>
<P>乍一看,函数的代码可能显得很复杂,但是在仔细研究之后,你会发现这段代码其实非常简单而且很优雅。最开始,我们使用了一个公共表表达式(CTE)来将一个时间戳记(第一个输入参数)分别剥离为单独的时间元素。然后,我们检查提供的定制格式(第二个输入参数)并将前面剥离出的元素按照该定制格式的要求加以组合。</P>
<P>这个函数还非常灵活。如果要增加另外一种模式,可以很容易地再添加一个 WHEN 子句来处理。在使用过程中,如果用户提供的格式不符合任何在
WHEN 子句中定义的任何一种模式时,函数会返回一个错误信息。</P>
<P>使用方法示例:</P><PRE class=code>values ts_fmt(current timestamp,'yyyymmdd')
'20030818'
values ts_fmt(current timestamp,'asa')
'date format asa not recognized.'
</PRE><A id=6 name=6></A>
<P><STRONG class=subhead>总结</STRONG></P>
<P
class=standard>这些示例回答了我在日期和时间方面所遇到的最常见问题。如果读者的反馈中认为我应该用更多示例来更新本文,那么我会那样做的。(事实上,我已经对本文更新了三次,不是吗?我要感谢读者的反馈。)</P><A
id=7 name=7></A>
<P><STRONG class=subhead>致谢</STRONG><BR></P>
<P>Bill Wilkins,DB2 Partner Enablement <BR>Randy Talsma </P><A id=8
name=8></A>
<P><STRONG class=subhead>免责声明</STRONG><BR></P>
<P class=standard>本文包含样本代码。IBM
授予您(“被许可方”)使用这个样本代码的非专有的、版权免费的许可证。然而,样本代码是以“按现状”的基础提供的,不附有任何形式的(不论是明示的,还是默示的)保证,包括对适销性、适用于某特定用途或非侵权性的默示保证。IBM
及其许可方不对被许可方使用该软件所导致的任何损失负责。任何情况下,无论损失是如何发生的,也不管责任条款怎样,IBM
或其许可方都不对由使用该软件或不能使用该软件所引起的收入的减少、利润的损失或数据的丢失,或者直接的、间接的、特殊的、由此产生的、附带的损失或惩罚性的损失赔偿负责,即使
IBM 已经被明确告知此类损害的可能性,也是如此。</P><!-- Sections ends -->
<P class=standard><A
href="http://www-900.ibm.com/developerWorks/cn/dmdd/library/techarticles/0211yip/0211yip3.shtml#top">至页首</A>
</P><!--
<a name="resources">
<p><strong class="subhead">Resources</strong></p>
<ul>
<li><b>Subgroup of resources</b><br/>Explanation of what the resources will provide for the developer. and then list the resources:</li>
<ul>
<li><a href="[include url of resource]">Title of resource</a></li>
<li><a href="[include url of resource]">Title of resource</a></li>
</ul>
</ul>
--><A name=authorname>
<P><STRONG class=subhead>关于作者</STRONG></P><!-- about author begin-->
<P><B>Paul Yip</B> 是 IBM 多伦多实验室的数据库顾问,用于各种分布式平台的 DB2
就是该实验室开发的。他的工作主要是帮助公司将应用程序从其它数据库迁移到 DB2 以及对有经验的 DBA 讲授如何将他们现有的技能运用到 DB2
世界中。他编写了多篇 DB2 文章和白皮书,并喜欢根据客户需求来编写文章。可以通过 <A
href="mailto:ypaul@ca.ibm.com">ypaul@ca.ibm.com</A> 与 Paul 联系 </P><!-- about author end-->
<TABLE cellSpacing=1 cellPadding=3 border=1>
<TBODY>
<TR>
<TD><FONT face=helvetica,helv,arial size=-1>
<P class=tm>IBM、AIX、DB2 和 DB2 Universal Database 是 IBM
公司在美国和/或其它国家或地区的商标或注册商标。</P>
<P class=tm>Windows 是 Microsoft Corporation 在美国和/或其它国家或地区的注册商标。</P>
<P class=tm>UNIX 是 The Open Group 在美国和其它国家或地区的注册商标。</P>
<P class=tm>其它公司、产品和服务可能是其它公司的商标或服务标记。</P>
<P class=tm><A href="http://www.ibm.com/legal/copytrade.phtml">IBM
版权和商标信息</A></P></FONT></TD></TR></TBODY></TABLE><!-- End paper --><BR></TD>
<TD vAlign=top width=8><IMG height=1
src="C:\software_wjp\db2 语法参考\DB2 基础:日期和时间的使用.files\c(1).gif"
width=8> </TD></TR>
<TR vAlign=top height=8>
<TD vAlign=top width=8></TD>
<TD vAlign=top width=8></TD>
<TD vAlign=top width=8></TD></TR>
<TR vAlign=top height=8>
<TD vAlign=top width=8><!-- gutter --></TD>
<TD vAlign=top width=8><!-- comments #7: rate article form -->
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="100%" bgColor=#000000 height=3><IMG height=1 alt=""
src="C:\software_wjp\db2 语法参考\DB2 基础:日期和时间的使用.files\c(1).gif"
width=150 border=0></TD></TR>
<TR vAlign=top>
<TD>
<FORM
action=/developerWorks/cn/wsddratings.nsf/RateArticle?CreateDocument
method=post><!-- comments #7: paste title here --><INPUT type=hidden
value="DB2 基础:日期和时间的使用" name=ArticleTitle> <!-- comments #7: for db2dd, zone=db2dd DON"T CHANGE --><INPUT
type=hidden value=DMDD name=Zone> <INPUT type=hidden
value="simplified chinese" name=region> <INPUT type=hidden
value=/developerWorks/cn/dmdd/thankyou/feedback-dmdd.html
name=RedirectURL>
<P><FONT face=helvetica,helv,arial
size=-1><B>您对这篇文章的看法如何?</B></FONT></P>
<TABLE cellSpacing=0 cellPadding=0 width=570 border=0>
<TBODY>
<TR vAlign=top>
<TD><INPUT type=radio value=5 name=Rating><FONT
face=helvetica,helv,arial size=-1>真棒!</FONT></TD>
<TD><INPUT type=radio value=4 name=Rating><FONT
face=helvetica,helv,arial size=-1>好文章</FONT></TD>
<TD><INPUT type=radio value=3 name=Rating><FONT
face=helvetica,helv,arial size=-1>一般;尚可</FONT></TD>
<TD><INPUT type=radio value=2 name=Rating><FONT
face=helvetica,helv,arial size=-1>需提高</FONT></TD>
<TD><INPUT type=radio value=1 name=Rating><FONT
face=helvetica,helv,arial size=-1>太差!
</FONT></TD></TR></TBODY></TABLE><BR><FONT face=helvetica,helv,arial
size=-1><B>意见?</B></FONT><BR><TEXTAREA name=Comments rows=3 wrap=virtual cols=52></TEXTAREA>
<BR><BR><INPUT type=submit value=提交反馈意见> </FORM></TD></TR></TBODY></TABLE><!-- end rate article form --></TD>
<TD vAlign=top width=8></TD></TR>
<TR vAlign=top height=8>
<TD vAlign=top width=8></TD>
<TD vAlign=top width=8></TD>
<TD vAlign=top width=8></TD></TR></TBODY></TABLE><!-- end content --><!-- FOOTER --><!-- need to modify links to appropriate Chinese pages -->
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt="" src="DB2 基础:日期和时间的使用.files/c.gif" width=1></TD></TR>
<TR vAlign=top>
<TD class=bbg height=21> <A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/index.shtml&origin=dm">关于
IBM</A><SPAN class=divider> | </SPAN><A
class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/privacy/index.shtml&origin=dm">隐私条约</A><SPAN
class=divider> | </SPAN><A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/legal/index.shtml&origin=dm">法律条款</A><SPAN
class=divider> | </SPAN><A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/contact/index.shtml&origin=dm">联系
IBM</A></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript1.2 src="DB2 基础:日期和时间的使用.files/stats.js"
type=text/javascript></SCRIPT>
<NOSCRIPT><IMG height=1 alt=""
src="C:\software_wjp\db2 语法参考\DB2 基础:日期和时间的使用.files\c(2).gif" width=1
border=0></NOSCRIPT> </BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -