<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
<channel>
<title>
<![CDATA[KFC的博客]]></title>
 <link>
http://myit365.blogcn.com</link>
<description>
<![CDATA[用自己的努力换回一个美丽的结局，学习IT,执着IT]]></description>
<managingEditor>
<![CDATA[adai6666]]></managingEditor>
<dc:creator>
<![CDATA[adai6666]]></dc:creator>
<blogcn_uid>
adai6666</blogcn_uid>
<blogcn_hits>
65</blogcn_hits>
<item>
<blogcn_uid>
<![CDATA[200858111]]></blogcn_uid>
<title>
<![CDATA[男人最让女人感动的一句粗话]]></title>
<link>
http://myit365.blogcn.com/diary,14508147.shtml</link>
<description>
<![CDATA[<SCRIPT type=text/javascript><!--
google_ad_client = "pub-9153240304874574";
/* 728x15, 创建于 08-3-16 */
google_ad_slot = "9229388409";
google_ad_width = 728;
google_ad_height = 15;
//-->
</SCRIPT>
<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
</SCRIPT>
<H2><FONT color=#6600cc>男人最让女人感动的一句粗话</FONT></H2><FONT color=#6600cc>男人最让女人感动的一句粗话<BR>赵先生一早起来就头痛的要死…… <BR><BR>因为他前一天晚上喝的烂醉回家! <BR>他强迫自己把疲惫不堪的眼睛睁开。 <BR>睁开眼后竟然看到床头上放了一杯水跟几颗头痛药，然后坐起身后又看到了他的衣服已经烫好、叠好在床边。 <BR>因为一起床就看到这几样反常的事，所以他决定要起身看一看房子其它的地方有没有什么奇怪的事 <BR>他把几颗头痛药吃了。 <BR>吃的时候突然发现药下有一张纸条， <BR>纸条上写着…… <BR>“亲爱的，我出去买菜了， <BR>你的早餐我已经做好放在餐桌上,趁热吃吧,爱你喔” <BR>赵先生一头雾水的走进了厨房， <BR>然后就真的看到了热腾腾的早餐在桌上还有当天的早报。 <BR>他看着坐在餐桌吃早餐的儿子问…… <BR>“儿子啊,昨天到底发生了什么事？” <BR>赵先生的儿子回答:“嗯……你凌晨三点跌跌撞撞、大吼大叫的回了家, <BR>把几个家俱给打坏踹坏, <BR>然后又很聪明的在走廊上撞了墙壁几下、送给自己一个黑眼圈!”赵先生越来越不明白的又问了儿子 <BR>“那为什么家里给打扫的那么干净,然后你妈又给我做了热腾腾的早餐给我吃呢?!” <BR>儿子恍然大悟的说: <BR>“喔,你是在问那个喔---妈昨天看到你醉死的回家， <BR>一肚子火的把你拉到房间里， <BR>然后想把你脏衣服换掉， <BR>结果在脱你裤子的时候你骂了她一句</FONT> <BR>]]></description>
<pubDate>
2008-03-20 17:15:00.0</pubDate>
<guid>
http://myit365.blogcn.com/diary,14508147.shtml</guid>
<comments>
http://myit365.blogcn.com/diary,14508147.shtml#comment</comments>
</item>
<item>
<blogcn_uid>
<![CDATA[200858111]]></blogcn_uid>
<title>
<![CDATA[鲁能热身王永珀抢大牌风头 帽子戏法帮助球队逆转]]></title>
<link>
http://myit365.blogcn.com/diary,14503610.shtml</link>
<description>
<![CDATA[&nbsp;图拔一直紧锁的眉头终于略微舒展开来，6名国奥小将的回归让一直缺兵少将的<A class=akey href="http://sports.sina.com.cn/chinaa/luneng/" target=_blank><FONT color=#000099>鲁能</FONT></A>队再度聚敛人气。与此同时，球队也迎来了一位新的试训外援前锋——玻利维亚国脚奥古斯托·安达维里斯。 
<P>　　现年29岁的安达维里斯曾代表玻利维亚国家队出战18次，贡献3个进球；在俱乐部方面，安达维里斯除了在05到06赛季在阿尔巴尼亚KF地拉那俱乐部短暂逗留外，均在玻利维亚国内俱乐部效力。让人稍感疑惑的是，在几乎所有的英文资料介绍中，安达维里斯的身高都只有1.72米，而经纪人提交给鲁能的资料却显示他身高1.86米。据目测，在鲁能接受试训的这位黑人前锋的身高的确与经纪人提供的资料吻合。</P>
<P>　　在国内联赛中，安达维里斯可谓是一个高产射手，鲁能球迷都期待这“最后的外援”能够成为新赛季的进攻利器，更希望早日目睹他摧城拔寨的风采。本周二下午，鲁能与哈尔滨毅腾之间的热身赛是他们在春节后的第11场热身赛，毫无疑问，球迷们都认为这是安达维里斯展现才能的好机会。但“最后外援”并没有首发，只是在下半场第20分钟后才得以亮相。安达维里斯上场就迎来了现场球迷的欢呼声，但除此之外，这位玻利维亚国脚随后再也没有表现出让球迷欢呼的亮点。针对新外援的低迷表现，图拔倒显得相对宽容，“他经过了长期飞行，时差还没有倒过来，周四还有一场比赛……”</P>
<P>　　相对新外援的状态平平，刚从国奥归来的<A class=akey href="http://blog.sina.com.cn/lnwangyongpoblog" target=_blank><FONT color=#000099>王永珀</FONT></A>却抢尽风头。在毅腾反客为主，利用一次禁区前任意球和一次反击，以2比0领先后，比赛进入鲁能节奏。王永珀先是在中路接队友吕征妙传推射空门得手，随后两次点球破门，完成“帽子戏法”，帮助球队逆转。</P>
<P>　　本周四和周六，鲁能还将有两场热身赛，对手分别是哈尔滨毅腾和山东省十一运队。俱乐部方面表示：“足协已经放宽了外援注册的截止日期，我们要争取尽早确定下来，如果实在不行，不排除放弃第三外援。但愿安达维里斯不会让我们失望。”<BR></P>

<SCRIPT type=text/javascript><!--
google_ad_client = "pub-9153240304874574";
/* 728x15, 创建于 08-3-16 */
google_ad_slot = "9229388409";
google_ad_width = 728;
google_ad_height = 15;
//-->
</SCRIPT>
<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
</SCRIPT>]]></description>
<pubDate>
2008-03-20 13:44:00.0</pubDate>
<guid>
http://myit365.blogcn.com/diary,14503610.shtml</guid>
<comments>
http://myit365.blogcn.com/diary,14503610.shtml#comment</comments>
</item>
<item>
<blogcn_uid>
<![CDATA[200858111]]></blogcn_uid>
<title>
<![CDATA[李章洙：我不生气我傻× 有人阻挠国安教训泰国人]]></title>
<link>
http://myit365.blogcn.com/diary,14503576.shtml</link>
<description>
<![CDATA[&nbsp; &nbsp;时间已经是19日晚上23时，但李章洙却仍然没有从比赛中抽离出来，他的脸色，还是让周围的人感到有点不安。在国安队驻地他自己的房间里，这位韩国人开始了一段高声的总结，“新队员、老队员”，队伍从上到下都被揪出来总结了一遍。 
<P>　　2比0到2比2，在主场两万名观众面前，李章洙对这个比赛中曾经出现的比分十分生气，赛后他阴沉着脸结束了整个新闻发布会，走出发布会场李章洙脸上的怒气让周围的人都感到了不安，走上小车时身边的人安慰他说：“别生气了”，李章洙用中国话回了一句“我不生气？我傻X啊！”顿时，周围变得安静起来，谁也不想再去惹这位恼怒的韩国主帅。 </P>
<P>　　在从丰体返回大井基地的路程里，坐在小车后座的李章洙一言不发。下了车，他径直走到一楼楼梯旁边的房间里，倒上热水喝了一口。在沙发上坐下后，他开始了对比赛的回顾。“我无法接受这样的比赛过程，特别是2比0领先的情况下，被对手连进两个球，这让我无法理解。” </P>
<P>　　首先成为李章洙总结对象的是替补国脚首发的队员。“替补队员没有达到我的期望和要求”，因为徐云龙、张帅等国脚没有回来，李章洙使用了郎征等球员作为首发，还给89国青的于洋报了名。“想通过这样的比赛让他们能够冒出来，郎征去年只打了一场比赛，我是希望他们能顶上来的，结果却没有这样的效果。”可是，这条重组的防线，却在<A class=akey href="http://sports.sina.com.cn/team/tailand/" target=_blank><FONT color=#000099>泰国</FONT></A>人面前连丢两球。 </P>
<P>　　另外，一些老队员的表现也成为了李章洙不满的对象。“部分队员发挥也不能令人满意，所以就带来了这样的局面和过程”，在总结中，李章洙特别提到了周挺，周挺本场比赛首发担任左后卫，但下半时却换下了他。谈及这个换人，李章洙有些无奈：“上一场周挺已经拿了一张黄牌，这场裁判一个吹罚后，他又去跟裁判争执，如果再被罚黄牌，下场对鹿岛鹿角队他就打不了了。” </P>
<P>　　李章洙最生气的，还是队员们对比赛的投入程度，“认真态度不够”，在聊天中，李章洙多次谈到这一点，“很多队员对亚洲赛事的比赛不重视。在2比0领先后，很多队员放松了身体，踢得较为随意，才造成了失分”，李章洙赛后向记者透露了自己对这场比赛十分重视的一个重要原因“中泰比赛昆明结束后，赛后我看到泰国主教练说中国和泰国<A class=akey href="http://sports.sina.com.cn/global/" target=_blank><FONT color=#000099>足球</FONT></A>水平在一个水平线上，我都不敢相信，还去找人核实，结果真是这么说的。我虽然是韩国人，但在中国的足球俱乐部当教练，对这些攻击的话，我感到非常气愤，这回就是想彻底击败他们。但是相反，队员们反倒觉得两球已经够了，根本没有乘胜追击的打算，我很不理解。”两场亚冠比赛，国安丢了3个球，李章洙认为这不正常，“亚冠水平更高，反而投入度不高，就算是为了观众踢球，就算靠替补打比赛，也不应该这么踢”，老李有点激动。 </P>
<P>　　说到球员不重视亚冠的根源，李章洙认为是从中国足协开始的。“不重视，首先是中国足协，很多人都说了解一个国家足球水平就去了解这个国家联赛的水平，要知道这是代表中国，是代表<A class=akey href="http://sports.sina.com.cn/china/" target=_blank><FONT color=#000099>中国足球</FONT></A>的形象，而且是中国主场。但是与国家队任务的冲突，我们就只能无奈地接受无法调人的事实，这不正常。” </P>


<SCRIPT type=text/javascript><!--
google_ad_client = "pub-9153240304874574";
/* 728x15, 创建于 08-3-16 */
google_ad_slot = "9229388409";
google_ad_width = 728;
google_ad_height = 15;
//-->
</SCRIPT>
<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
</SCRIPT>]]></description>
<pubDate>
2008-03-20 13:40:00.0</pubDate>
<guid>
http://myit365.blogcn.com/diary,14503576.shtml</guid>
<comments>
http://myit365.blogcn.com/diary,14503576.shtml#comment</comments>
</item>
<item>
<blogcn_uid>
<![CDATA[200858111]]></blogcn_uid>
<title>
<![CDATA[张娜拉转型为熟女 露大腿裸背挑战性感(组图)]]></title>
<link>
http://myit365.blogcn.com/diary,14503128.shtml</link>
<description>
<![CDATA[<DIV>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-9153240304874574";
/* 728x15, 创建于 08-3-16 */
google_ad_slot = "9229388409";
google_ad_width = 728;
google_ad_height = 15;
//-->
</SCRIPT>
<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
</SCRIPT>


<P align=center><IMG alt="张娜拉转型为熟女 露大腿裸背挑战性感(组图)" src="http://img1.qq.com/ent/pics/9369/9369538.jpg" border=1 name=MM></P>
<DIV style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体" align=center>张娜拉瘦到42公斤</DIV>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">
<P align=center><IMG alt="张娜拉转型为熟女 露大腿裸背挑战性感(组图)" src="http://img1.qq.com/ent/pics/9369/9369539.jpg" border=1 name=MM></P>
<DIV style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体" align=center><CLK><NOBR oncontextmenu="return false;" onmousemove=kwM(0); id=clickeyekey0 onmouseover="kwE(event,0, this);" style="FONT-WEIGHT: bold; COLOR: #009900; BORDER-BOTTOM: #009900 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC(event,0)" onmouseout="kwL(event, this);" target="_1">记者</NOBR>会上张娜拉穿上超短裙，在台上又唱又跳</CLK></DIV>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">前天迎接27岁生日的“明朗少女”<A href="http://datalib.ent.qq.com/star/219/index.shtml" target=_blank>张娜拉</A><A href="http://datalib.ent.qq.com/star/219/albums_list.shtml" target=_blank><IMG alt=张娜拉所有音乐专辑 src="http://mat1.qq.com/ent/datalib/album/albumcd.gif" border=0></A>，转型性感小女人举行第6张专辑“梦想”的发行记者会。绯闻男友<A href="http://datalib.ent.qq.com/star/253/index.shtml" target=_blank>何润东</A><A href="http://datalib.ent.qq.com/star/253/albums_list.shtml" target=_blank><IMG alt=何润东所有音乐专辑 src="http://mat1.qq.com/ent/datalib/album/albumcd.gif" border=0></A>贴心送上27万韩元的NDS电玩当生日礼物，希望帮经常搭飞机的张娜拉对抗“恐机症”。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><CLK>之前发过两张<NOBR oncontextmenu="return false;" onmousemove=kwM(2); id=clickeyekey2 onmouseover="kwE(event,2, this);" style="FONT-WEIGHT: bold; COLOR: #009900; BORDER-BOTTOM: #009900 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC(event,2)" onmouseout="kwL(event, this);" target="_1">中文</NOBR>专辑的张娜拉，这次进军目标锁定全亚洲，专辑中挑战演唱韩语、日语、英语、普通话和粤语等5种语言的歌曲，她特别翻唱</CLK><A href="http://ent.qq.com/tv/oxjc.htm" target=_blank>偶像</A><CLK>邓丽君的《月亮代表我的心》普通话和粤语版。个性要求完美的张娜拉，给新专辑打78分，却只给自己的中文打25分，公司同事透露张娜拉中文程度已好到一般中文对话都听得懂，她听到谦虚地猛摇头。对于忙新专辑结果传出患忧郁症，目前体重降到42公斤，对此张娜拉并未正面回应，只说：“新闻报道夸张了点，但<NOBR oncontextmenu="return false;" onmousemove=kwM(1); id=clickeyekey1 onmouseover="kwE(event,1, this);" style="FONT-WEIGHT: bold; COLOR: #009900; BORDER-BOTTOM: #009900 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC(event,1)" onmouseout="kwL(event, this);" target="_1">艺人</NOBR>的确没有私生活，这方面是有压力，但我从小就梦想成为歌手和演员，了解私生活摊在阳光下是不可避免。” </CLK></P></DIV>]]></description>
<pubDate>
2008-03-20 13:17:00.0</pubDate>
<guid>
http://myit365.blogcn.com/diary,14503128.shtml</guid>
<comments>
http://myit365.blogcn.com/diary,14503128.shtml#comment</comments>
</item>
<item>
<blogcn_uid>
<![CDATA[200858111]]></blogcn_uid>
<title>
<![CDATA[企业开发框架NHibernate和Spring.Net简介 ]]></title>
<link>
http://myit365.blogcn.com/diary,14489678.shtml</link>
<description>
<![CDATA[<script type="text/javascript"><!--
google_ad_client = "pub-9153240304874574";
/* 728x15, 创建于 08-3-16 */
google_ad_slot = "9229388409";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>


在开始介绍NHibernate和Spirng.Net之前，有必要先介绍一下相对应的两个Java开源框架Hibernate和Spring。它们是在Java的Web应用开发中已经很成熟的框架，而前者则是两个还不成熟的.Net中的开源框架，它们在SourceForge开源社区中正在得到不断的补充和完善，其最终目标就是要在.NET环境下实现Hibernate和Spring的全部 特性。 Spring是一个解决了许多在J2EE开发中常见问题的强大框架，它提供了管理业务对象的一致方法并且鼓励注入对接口编程而不是对类编程的良好习惯。Spring提供了唯一的数据访问抽象，包括简单和有效率的JDBC框架，极大改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象，它为各种底层事务管理技术，例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架，它给POJO提供了声明式的事务管理和其他企业事务。这个框架足够强大，使得应用程序能够抛开EJB的复杂性，同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。 Hibernate是一个开放源代码的对象关系映射（Object-Relation Mapping，ORM）框架，它对JDBC进行了非常轻量级的对象封装，使得Java程序员可以随心所欲地使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合，既可以在Java的客户端程序使用，也可以在Servlet/JSP的Web应用中使用，最具革命意义的是，Hibernate可以在应用EJB的J2EE架构中取代CMP，完成数据持久化的重任。鉴于Hibernate在Java社区巨大的影响力，它其实已经成为Java社区的持久层技术事实上的标准。基于.NET的开发框架NHibernate和Spring.Net分别来源于上述提到的两个Java框架，框架结构和实现功能都基本一致，只不过应用环境从Java转到了.NET。到目前为止NHibernate和Spring.NET仍然处于完善阶段，不是特别成熟稳定，但是具有Hibernate和Spring的强大背景，使得它们有着很光明的未来。事实上，现在NHibernate和Spring.NET正在被越来越多的开发人员所熟知，并且有些开发人员已经开始尝试在自己的项目中使用这两个框架。 1.5.1 企业开发框架的优势在当今的企业环境中，开发企业应用程序是一个相当繁琐、浪费时间的过程，为了让这个过程变得相对简单且高效，一些开源的、轻量级的框架正在被广泛的使用，比如Java下的Structs、Spring、Hibernate、iBATIS以及.NET下的Spring.Net和NHibernate等。它们的广泛使用降低了系统开发的复杂度，弱化了系统各模块间的耦合程度，缩短了开发周期，增强了系统的可维护性和可扩展性。“站在巨人的肩膀上”是牛顿的一句名言，它已经成为google学术搜索引擎的座右铭，同样也为笔者所推崇。笔者对.Net软件开发平台的设想如下，采用开源的ORM框架做数据持久层，ASP.NET没有合适的Web层框架，采用Asp.Net的Code-behind方式编写代码，数据持久层同Web表现层之间的连接采用IoC容器。衡量了多种框架以后，最终笔者推荐采用的技术架构就是NHibernate+Spring.Net+ASP.NET，下面对NHibernate和Spring.net分别进行比较详细的介绍。 1.5.2 NHibernate介绍在今日的企业环境中，把面向对象的软件和关系数据库一起使用可能是相当麻烦和浪费时间的。NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射（object/relational mapping，ORM）这个术语表示一种技术，用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。 NHibernate不仅仅管理.NET类到数据库表的映射（包括.NET 数据类型到SQL数据类型的映射），还提供数据查询和获取数据的方法，可以大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间。 NHibernate的目标主要是用于与数据持久化相关的编程任务，能够使开发人员从原来枯燥的SQL语句的编写中解放出来，解放出来的精力可以让开发人员投入到业务逻辑的实现上。对于以数据为中心的程序，开发人员往往是在数据库中使用存储过程来实现商业逻辑，这种情况下NHibernate可能不是最好的解决方案，但对于那些基于.NET，并且能够实现OO业务模型和商业逻辑的中间层应用，NHibernate是最有用的。NHibernate可以帮助用户消除或者包装那些针对特定厂商的SQL代码，并且帮用户把结果集从表格式的表示形式转换成一系列的对象。 1．NHibernate体系结构 NHibernate体系结构如图1-51所示。它体现了NHibernate如何使用数据库和配置文件数据来为应用程序提供持久化服务（和持久化的对象）。在NHibernate全面解决体系中，NHibernate运行时体系结构的细节如图1-52所示。 图1-51 NHibernate体系结构 图1-52 NHibernate详细体系结构 SessionFactory(NHibernate.IsessionFactory)：它是Session的工厂，是ConnectionProvider的客户。可以持有一个可选的（第二级）数据缓存，可以在进程级别或集群级别保存的可以在事物中重用的数据。 会话（NHibernate.ISession）：单线程，生命期较短的对象，代表应用程序和持久化层之间的一次对话。封装了一个ADO.NET连接，也是Transaction的工厂。保存有必需的（第一级）持久化对象的缓存，用于遍历对象图，或者通过标识符查找对象。 持久化对象（Persistent）及其集合（Collections）：生命期较短的单线程的对象，包含了持久化状态和商业功能。这些可能是普通的对象，唯一特别的是现在从属于且仅从属于一个Session。一旦Session被关闭，它们都将从Session中取消联系，可以在任何程序层自由使用（比如，直接作为传送到表现层的DTO,数据传输对象）。 临时对象（Transient Object）及其集合（Collection）：目前没有从属于一个Session的持久化类的实例。这些可能是刚刚被程序实例化，还没有来得及被持久化，或者是被一个已经关闭的Session实例化。 事务Transaction (NHibernate.ITransaction)：（可选）单线程，生命期较短的对象，应用程序用其来表示一批工作的原子操作，它是底层的ADO.NET事务的抽象。一个Session在某些情况下可能跨越多个Transaction事务。 ConnectionProvider（NHibernate.Connection.ConnectionProvider）：（可选）ADO.NET连接的工厂。从底层的IDbConnection抽象而来。对应用程序不可见，但可以被开发者扩展/实现。 TransactionFactory（net.sf.hibernate.TransactionFactory）：（可选）事务实例的工厂。对应用程序不可见，但可以被开发者扩展/实现。 2．持久化类持久化类是应用程序用来解决商业问题的类（比如，在电子交易程序中的Customer和Order）。持久化类是暂时存在的，实例会被持久性保存于数据库中。 如果这些类符合简单的规则，NHibernate能够工作得最好，这些规则就是Plain Old CLR Object（POCO，简单传统CLR对象）编程模型。 POCO简单示例（用一个类描述一只猫）如下： #001 public class Cat #002 { #003 private long _id; // 标识符 #004 private string _name; // 名字 #005 private DateTime _birthdate; // 出生日期 #006 private Cat _mate; // 猫的配对 #007 private Set _kittens; // 猫仔 #008 private Color _color; // 颜色 #009 private char _sex; // 性别 #010 private float _weight; // 体重 #011 public long Id // 标识符属性 #012 { get { return _id; } #013 set { _id = value; } #014 public string Name // 名字属性 #015 { get { return _name; } #016 set { _name = value; }} #017 public DateTime Birthdate // 出生日期属性 #018 { get { return _birthdate; } #019 set { _birthdate = value; }} #020 public Cat Mate // 猫的配对属性 #021 { get { return _mate; } #022 set { _mate = value; }} #023 public Set Kittens // 猫仔属性 #024 { get { return _kittens; } #025 set { _kittens = value; }} #026 public Color Color // 颜色属性 #027 { get { return _color; } #028 set { _color = value; }} #029 public char Sex // 性别属性 #030 { get { return _sex; } #031 set { _sex = value; }} #032 public float Weight // 体重属性 #033 { get { return _weight; } #034 set { _weight = value; }} #035 } 有4条主要的规则如下。 为持久化字段声明访问器（getters和setters）。 Cat为它的所有可持久化字段声明了getters和setters访问器。用访问器来替代直接访问字段是个好习惯。也可以通过字段（field）来使用NHibernate。属性不一定需要声明为public的。NHibernate可以对default、protected、internal或private的属性执行持久化。 实现一个默认的构造方法（constructor）：Cat有一个显式的无参数默认构造方法。所有的持久化类都必须具有一个默认的构造方法（可以不是public的），这样NHibernate就可以使用Constructor.Invoke()来实例化它们。 提供一个标识属性（identifier property）（可选）。 建议使用不是sealed的类（可选）。 3．NHibernate映射对象和关系数据库之间的映射是用一个XML文档（XML document）来定义的。这个映射文档被设计为易读的，并且可以手工修改。映射语言是以.NET为中心的，意味着映射是按照持久化类的定义来创建的，而非表的定义。在Hibernate中XML映射文档可以手动定义，也有一些工具来辅助生成，包括Xdoclet、Middlegen和AndroMDA，但是在NHibernate文档中并没有上述的辅助工具，不过可以采用MyGeneration这样的代码生成工具来生成XML配置文档。下面是一个映射的例子： #001 <?xml version="1.0" ?>#002 <HIBERNATE-MAPPING xmlns="urn:nhibernate-mapping-2.0" assembly="Eg" namespace="Eg">#003 <CLASS discriminator-value="C" table="CATS" name="Cat">#004 <ID type="Int64" name="Id" column="uid">#005 <GENERATOR class=hilo />#006 </ID>#007 <DISCRIMINATOR type="Char" column="subclass" />#008 <property type="Char" name="Name"></property>#009 <property name="Color" not-null="false"></property>#010 <property name="Sex" not-null="false" update="false"></property>#011 <property name="Weight"></property>#012 <MANY-TO-ONE name="Mate" column="mate_id" />#013 <SET name="Kittens">#014 <KEY column="mother_id" />#015 <ONE-TO-MANY class=Cat />#016 </SET>#017 <SUBCLASS discriminator-value="D" name="DomesticCat">#018 <property type="String" name="Name"></property>#019 </SUBCLASS>#020 </CLASS>#021 </HIBERNATE-MAPPING>所有的XML映射都需要使用nhibernate-mapping-2.0 schema。目前的schema可以在NHibernate的资源路径或者是NHibernate.dll的嵌入资源（Embedded Resource）中找到。NHibernate总是会优先使用嵌入在资源中的schema文件。在使用VisualStudio.NET时，用户应该将hibernate-mapping拷贝到C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\ Packages\schemas\xml路径中，以获得智能感知功能。 #002行：hibernate-mapping这个元素包括4个可选的属性。schema属性，指明了这个映射所引用的表所在的schema名称。假若指定了这个属性，表名会加上所指定的schema的名字扩展为全限定名。假若没有指定，表名就不会使用全限定名。default-cascade指定了未明确注明cascade属性的属性和集合类会采取什么样的默认级联风格。auto-import属性默认在查询语言中可以使用非全限定名的类名。default-access告诉用户怎么访问属性值。假若有两个持久化类，它们的非全限定名是一样的，应该设置auto-import= "false"。假若把一个“import”过的名字同时对应两个类，NHibernate会抛出一个异常。 #003行：使用class元素来定义一个持久化类。name是持久化类（或者接口）的全限定名。table是对应的数据库表名。discriminator-value（可选 - 默认和类名一样）是一个用于区分不同的子类的值，在有多态行为时使用。 #004行：使用id来标识主键字段，因为被映射的类必须声明对应数据库表主键字段。大多数类有一个属性，为每一个实例包含唯一的标识。<ID> 元素定义了该属性到数据库表主键字段的映射。 #005行：必须声明的 <GENERATOR>子元素是一个.NET类的名字，用来为该持久化类的实例生成唯一的标识。其中hilo（高低位）使用一个高/低位算法来高效地生成Int64、Int32 或者Int16类型的标识符。给定一个表和字段（默认分别是hibernate_unique_key 和next）作为高位值的来源。高/低位算法生成的标识符只在特定的数据库中是唯一的。 #007行：在“一棵对象继承树对应一个表”的策略中，<DISCRIMINATOR>元素是必需的，它声明了表的识别器字段。识别器字段包含标志值，用于告知持久化层应该为某个特定的行创建哪一个子类的实例。只能使用如下受到限制的类型：String，Char，Int32，Byte，Int16，Boolean，YesNo，TrueFalse。 #008-011行：<property>元素为类声明了一个持久化的属性。name是属性的名字，type（可选）是一个NHibernate类型的名字，not-null（可选）表明这个属性是否为空，update（可选-默认为true）表明在用于UPDATE的SQL语句中是否包含这个字段。 #012行：通过many-to-one元素，可以定义一种常见的与另一个持久化类的关联。这种关系模型是多对一关联（实际上是一个对象引用）。 #013-016行：<SET>为集合类标识，其中discriminator-value（可选 - 默认为类名）用于区分每个独立的子类的值。 #017行：子类（subclass），多态持久化需要为父类的每个子类都进行声明。对于上面建议的“每一棵类继承树对应一个表”的策略来说，就需要使用<SUBCLASS>声明。 4．NHibernate应用实例上面已经编写好了Cat类和相应的映射文件，为了正确调用Nhibernate，必须对web.config配置文件进行配置。具体配置代码如下： #001 <xml ? encoding="utf-8" version="1.0">
#002  <configuration>
#003       <configSections>
#004           <section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System Version=2.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
#005       </configSections>
#006       <nhibernate>
#007           <add 
#008                key="hibernate.connection.provider" 
                     value="NHibernate.Connection.DriverConnectionProvider" />
#009           <add 
#010                key="hibernate.connection.driver_class" 
                    value="NHibernate.Driver.SqlClientDriver" />
#011           <add 
#012                key="hibernate.connection.connection_string" 
                    value="server=localhost;uid=sa;pwd=123;database=Sample" />
#013           <add 
#014                key="hibernate.connection.isolation" value="ReadCommitted" />
#015           <add 
#016                key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
#017       </nhibernate>
#018  </configuration>
#012行：hibernate.connection.connection_string的value为连接服务器ConnectoinString。其他的都是Nhibernate运行所必需的配置信息。
配置完web.config文件，在测试工程中引用NHibernate.dll和Eg，具体代码如下。
#001    using System;
#002    using System.Collections.Generic;
#003    using System.Text;
#004   using NHibernate;
#005    using NHibernate.Cfg;
#006    using POJOLibrary;
#007    namespace Test
#008    {
#009        class Program
#010        {
#011            static void Main(string[] args)
#012            { Configuration c = new Configuration();
#013                c.AddAssembly("Eg");
#014                ISessionFactory factory = c.BuildSessionFactory();
#015               ISession s = factory.OpenSession();
#016               ITransaction t = s.BeginTransaction();
#017                Cat cat = new Cat();
#018                cat.Name = “Bolo”;
#019                 cat.Color = “Black”;
#020                 cat.Sex = “Male” ;
#021                 cat.Weight = “12” ;
#022                s.Save(cat);
#023                t.Commit();}
#024        }
#025    }
NHibernate是通过Isession的实现类来提供功能的，上面代码通过Itransaction打开一个事务t=s.BeginTransaction()，最后通过调用t.Commit()提交事务，将数据写入数据库中。
通过上述NHibernate的一个简单的应用实例可以看到，整个应用程序中没有写任何一句SQL语句。
虽然NHibernate目前不是非常的成熟，还没有达到实用化的水平，它经常在负荷有些大的时候崩溃，但是它脱胎于在Java社区有着巨大影响力的Hibernate，而且NHibernate在实际应用方面确实体现出了它的优势，基于上述原因NHibernate一定会被越来越多的开发人员所接受，而且一定会被标准化。到目前为止，NHibernate的最新版本为1.1，官方站点http://nhibernate.sourceforge.net/上目前的版本是beta 0.7.0.0。
1.5.3  Spring.Net介绍
Spring.Net是一个关注于.NET企业应用开发的应用程序框架，它能够提供非常丰富的功能，例如依赖注入（Dependency Injection），面向方面编程（Aspect Oriented Programming），数据访问抽象以及ASP.NET集成等。Spring.NET脱胎于Java的Spring框架，其1.0版包括了一个功能完整的反转控制容器和AOP函数库，在后续的版本中将包含对ASP.NET、Remoting和数据访问的支持。Spring.Net的框架如图1-53所示。

图1-53  Spring.Net的框架图
1．控制反转
控制反转（IoC，Inversion of Control）意味着将设计好的类交给系统去控制，而不是在自己的类内部控制。
IoC是近年来兴起的一种思想，主要是协调各组件间相互的依赖关系，同时大大提高了组件的可移植性，组件的重用机会也变得更多。在传统的实现中，由程序内部代码来控制程序之间的关系。我们经常使用new关键字来实现两组键间关系的组合，这种实现地方式会造成组件之间耦合（一个好的设计，不但要实现代码重用，还要将组件间关系解耦）。IoC很好地解决了该问题，它将实现组件间关系从程序内部提到外部容器，也就是说由容器在运行期将组件间的某种依赖关系动态注入组件中。
分离关注（Separation of Concerns：SOC）是产生IoC模式和AOP的最原始动力，通过功能分解可得到关注点，这些关注可以是组件、方面或服务。
从GOF设计模式中，我们已经习惯一种思维编程方式——接口驱动。接口驱动有很多好处，可以提供灵活的子类实现，增加代码稳定和健壮性等，但是接口一定是需要实现的，即如下语句一定要执行。
AInterface a = new AInterfaceImp(); 
AInterfaceImp是接口AInterface的子类，Ioc模式可以根据需要延缓接口的实现，有个比喻：接口如同空的模型套，在必要时向模型套注射石膏，成为一个模型实体。可以人为控制接口的实现完成“注射”。
IoC的实现方式有以下几种：
    基于接口的（Interface-based IoC,Type-1）。
    基于设值的（Setter-based IoC,Type-2）。
    基于构造的（Construtor-based IoC,Type-3）。
下面通过简单的例子分别介绍上述几种实现方式。
（1）Type-1。基于接口的设计方法通常是利用接口将调用者与实现者分离。
#001  public class Sport {
#002  private InterfaceBall ball; //InterfaceBall是定义的接口
#003  public void init() {
#004  //Basketball实现了InterfaceBall接口
#005  ball = (InterfaceBall) Class.forName("Basketball").newInstance();}
#006  }
Sport类在编译期依赖于InterfaceBall的实现，为了将调用者与实现者分离，可以动态生成Basketball类并将其强制类型转换为InterfaceBall。
（2）Type-2。基于设值的设计方法是通过在类中暴露setter方法来实现依赖关系。
#001  public class Sport {
#002  private InterfaceBall _ball;
#003  public InterfaceBal1 ball
#004  {
#005      set{ _ball = value ;} }
#006  }
Spring.NET就是实现了该类型的轻量级容器。
（3）Type-3。通过构造方法完成依赖关系。
#001  public class Sport {
#002  private InterfaceBall ball;
#003  public Sport(InterfaceBall arg) {
#004  ball = arg; }
#005  }
由于Type-3在构造期就形成了对象的依赖关系，所以对对象的重用变得困难。有些框架需要组件提供一个默认的构造方法，此时就显现出Type-3的局限性。通常所有的参数都是通过构造方法注入的，当对象间的依赖关系较多时，构造方法就显得比较复杂，不利于单元测试。PicoContainer就是实现了Type-3依赖注入模式的轻量级容器。
2．Spring.NET库
Spring.NET库有6个基本组成部分，基本上涵盖了Spring.NET框架的所有功能结构。
    Spring.Core库是Spring.NET框架最基础的部分，它提供了依赖注入的功能。Spring.NET中大部分的函数库都依赖于这个核心库提供的功能，或者是对核心库的扩展。IObjectFactory是核心容器接口，负责管理容器内的注入对象，而IApplicationContext则是IObjectFactory的继承，它扩展了一些功能。
    Spring.Aop库为商业逻辑对象提供了面向方面编程的支持，它为创建企业应用和为商业对象提供服务打下了基础，是Spring核心库中IoC容器的补充。
    Spring.Web库为ASP.NET增加了很多功能，例如ASP.NET页面的依赖注入，数据双向绑定，为ASP.NET提供母版页功能，增强了本地化支持。所有的这些都是对ASP.NET很好的扩展。
    Spring.Services库可以将任何一个“普通”对象（“普通”是指该对象不是继承自特殊服务的基类）暴露成为一个企业应用（COM+）或者远程对象。因为对依赖注入和原数据属性重载的支持，.NET 中的Web服务会获得更好的配置上的灵活性。同样，该库也提供了对Windows服务的支持。
    Spring.Data库为.NET提供了一个数据访问层的抽象，它能够用于从ADO.NET到多种ORM Provider的数据访问提供者。它同时包含了一个ADO.NET抽象层，简化了对ADO.NET的编码和事务管理。
    Spring.ORM库提供了一个用于常见的对象—关系映射库的综合层，它提供了诸如对事务管理的支持等功能。
3．面向方面编程（AOP）
面向方面编程是对面向对象编程（OOP）的补充，是另外一种思考编程框架的方法。面向对象是将应用分解成具有层次结构的对象；而面向方面编程则是把程序分解成方面或者关注点，使诸如事务管理等方面的模块化成为可能。Spring.NET中很关键的一个组件就是AOP框架。能够帮助Spring.NET的 IoC容器为企业应用提供一个非常强大的中间件解决方案。
AOP用于Spring.NET可以完成下列功能。
    提供公开的企业服务，尤其是作为COM+公开服务的替代者。这些服务中最重要的服务是公开的事务管理，这是Spring.NET事务抽象的基础。
    允许用户实现定制的方面，通过面向方面编程来补充面向对象编程的不足。
用户不但可以把Spring.NET AOP看作是能够不通过COM+就可以提供公开事务管理的技术，而且还可以充分发挥Spring.NET AOP框架的功能区实现定制方面。
通过上面的介绍读者可能对AOP已经有了一个大致的了解，下面介绍几个关于AOP的概念。
    方面（Aspect）：这个是一个让读者感觉比较模糊的概念，它和通常意义上的方面不完全一样，它是对关注点的模块化，这可能会横切多个对象。事务管理是一个非常好的横切关注点企业应用的例子。在Spring.NET中，方面作为建议者或者监听器的形式实现。
    连接点（Jointpoint）：程序运行期间的一些点，例如方法调用或者特殊的异常被抛出。
    建议（Advice）：AOP框架在一个特殊连接点上采取的动作。这些不同类型的建议包括“around”、“before”和“throws” 等建议。很多AOP框架，包括Spring.NET，都把一个建议模拟成一个监听器，同时维护一个“around”连接点的监听器链。
    切点（Pointcut）：一组连接点，用于指定建议应该激活的时间。一个AOP框架必须能够允许开发人员指定切点，例如，使用正则表达式。
    介绍（Introduction）：添加方法或域到建议类。Spring.NET允许介绍一个新的接口到任何一个建议对象中。例如，为了简化对对象状态变化的跟踪，可以使用建议为任何对象实现一个IAuditable接口。
    目标对象：包含连接点的对象。
    AOP代理：由AOP框架创建的对象，包括建议。在Spring.NET中，一个AOP代理是一个在运行期使用IL代码生成的动态代理。
    Weaving：装配对象创建一个被建议对象。装配工作发生在编译期（例如使用Gripper-Loom .NET编译器），也能发生在运行期。Spring.NET在运行期执行装配动作。
4．Spring.NET应用实例
下面以经典的Movie Finder作为Spring.NET应用实例来讲解IoC容器的使用方法。实例的C#代码可以在Spring.NET发布版的examples/Spring/Spring.Examples.MovieFinder目录中找到。
（1）Movie Finder。MovieFinder例子的起始类是MovieApp类，这是具有单一应用程序入口点的普通.NET类。代码如下所示：
#001  using System;
#002  namespace Spring.Examples.MovieFinder
#003  {
#004      public class MovieApp
#005      {
#006           public static void Main ()
#007           {
#008           }
#009      }
#010  }
现在想做的是获得一个对MovieFinder类实例的引用。这是Spring.NET例子，所以要从Spring.NET的IoC容器类IApplicationContext获得这个引用。应用程序配置文件中的IApplicationContext配置信息如下：
#001  <?xml version="1.0" encoding="utf-8" ?>
#002  <configuration>
#003  <configSections>
#004  <sectionGroup name="spring">
#005  <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
#006  <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
#007  </sectionGroup>
#008  </configSections>
#009  <spring>
#010  <context>
#011  <resource uri="config://spring/objects"/>
#012  </context>
#013  <objects>
#014  <description>An example that demonstrates simple IoC features.</description>
#015  </objects>
#016  </spring>
#017  </configuration>
将在应用程序示例中用到的对象配置成嵌套在<objects/>元素中的<object/>元素。
（2）获得IApplicationContext应用。代码如下所示：
#001  using System;
#002  using System.Configuration;
#003  using Spring.Context;
#004  ...
#005  public static void Main ()
#006  { IApplicationContext ctx = ContextRegistry.GetContext();}
#007  ...
如上所述，using System.Configuratoin和using Spring.Context两条using语句被加到了MovieApp类文件中。其中，System.Configuration命名空间可以让应用程序存取保存在配置文件中的Spring.NET的IoC容器的定义；Spring.Context命名空间可以让应用程序存取IApplicationContext类，这个类是应用程序存取Spring.NET所提供的功能的主要方法。
方法main获得一个IApplicationContext的实现，它的配置信息已经被写在应用程序配置文件内名为<objects/>的节中。
（3）第一个对象的定义。到目前为止，在应用程序配置文件中还没有对象定义，所以下面定义一个对象。MovieLister实例的XML定义如下所示。
#001  ...
#002  <objects>
#003    <object name="MyMovieLister"
#004           type="Spring.Examples.MovieFinder.MovieLister, Spring.Examples.MovieFinder">
#005    </object>
#006  </object>
#007  ...
#003行：MyMovieLister是该对象的唯一标识符，使用这个标识符，这个对象的实例就能够被如下所示的代码中的IApplicationContext引用所获取。
#001  ...
#002  public static void Main ()
#003    { IApplicationContext ctx = ContextRegistry.GetContext();
#004      MovieLister lister = (MovieLister) ctx.GetObject ("MyMovieLister");}
#005  ...
lister实例仍然没有与IMovieFinder接口相应的实现注入。此时如果使用MoviesDirectedBy方法会导致NullReferenceException异常发生，因为lister实例仍然还没有对IMovieFinder的引用。注入到lister实例中的IMovieFinder接口实现的XML配置定义如下。
#001  ...
#002     <objects>
#003        ...
#004        <object name="MyMovieFinder"
#005       type="Spring.Examples.MovieFinder.SimpleMovieFinder, Spring.Examples.MovieFinder"/>
#006        </object>
#007        ...
#008     </object>
#009  ...
（4）设值注入。下面要做的是把以MyMovieFinder为标识符的IMovieFinder实例注入到以MyMovieLister为标识符的MovieLister实例中。这个注入动作使用设值注入的方法，代码如下所示：
#001  ...
#002  <objects>
#003  <object name="MyMovieLister"
#004  type="Spring.Examples.MovieFinder.MovieLister, Spring.Examples.MovieFinder">
#005  <!-- using setter injection... -->
#006  <property name="movieFinder" ref="MyMovieFinder"/>
#007  </object>
#008  <object name="MyMovieFinder"
#009  type="Spring.Examples.MovieFinder.SimpleMovieFinder, Spring.Examples.MovieFinder"/>
#010  </object>
#011  </objects>
#012  ...
当IApplicationContext接口取得了MyMovieLister对象以后，Spring.NET的IoC容器将会把对MyMovieLister对象的引用注入到MyMovieLister对象的MovieFinder属性中去。这样，在程序中引用的MovieFinder对象即配置完毕，可以列出某导演导过的所有电影。
#001  ...
#002  public static void Main ()
#003  {
#004  IApplicationContext ctx = ContextRegistry.GetContext();
#005  MovieLister lister = (MovieLister) ctx.GetObject ("MyMovieLister");
#006  Movie[] movies = lister.MoviesDirectedBy("Roberto Benigni");
#007  Console.WriteLine ("\nSearching for movie...\n");
#008  foreach (Movie movie in movies)
#009  {Console.WriteLine (
#010   string.Format ("Movie Title = '{0}', Director = '{1}'.",
#011   movie.Title, movie.Director));}
#012  Console.WriteLine ("\nMovieApp Done.\n\n");
#013  }
#014  ...
也可以使用构造注入的方法，读者可以自己考虑构造注入方法的实现方式，这里就不再具体介绍。
现在Spring.Net的1.0.2版本已经发布，读者可以通过访问http://sourceforge.net/ projects/ springnet下载。
</body>
</html></xml></property>]]></description>
<pubDate>
2008-03-19 18:17:00.0</pubDate>
<guid>
http://myit365.blogcn.com/diary,14489678.shtml</guid>
<comments>
http://myit365.blogcn.com/diary,14489678.shtml#comment</comments>
</item>
<item>
<blogcn_uid>
<![CDATA[200858111]]></blogcn_uid>
<title>
<![CDATA[sql server日期时间函数 ]]></title>
<link>
http://myit365.blogcn.com/diary,14489405.shtml</link>
<description>
<![CDATA[<DIV>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-9153240304874574";
/* 468x60, 创建于 08-3-11 */
google_ad_slot = "8836922842";
google_ad_width = 468;
google_ad_height = 60;
//-->
</SCRIPT>

<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
</SCRIPT>


<STRONG>sql server日期时间函数<BR></STRONG>
<DIV>Sql Server中的日期与时间函数 <BR>1.&nbsp;&nbsp;当前系统日期、时间 <BR>&nbsp;&nbsp;&nbsp;&nbsp;select getdate()&nbsp;&nbsp;</DIV>
<DIV>2. dateadd&nbsp;&nbsp;在向指定日期加上一段时间的基础上，返回新的 datetime 值&nbsp; <BR>&nbsp;&nbsp; 例如：向日期加上2天 <BR>&nbsp;&nbsp; select dateadd(day,2,'2004-10-15')&nbsp;&nbsp;--返回：2004-10-17 00:00:00.000</DIV>
<DIV>3. datediff 返回跨两个指定日期的日期和时间边界数。<BR>&nbsp;&nbsp; select datediff(day,'2004-09-01','2004-09-18')&nbsp;&nbsp; --返回：17</DIV>
<DIV>4. datepart 返回代表指定日期的指定日期部分的整数。<BR>&nbsp;&nbsp;SELECT DATEPART(month, '2004-10-15')&nbsp;&nbsp;--返回 10</DIV>
<DIV>5. datename 返回代表指定日期的指定日期部分的字符串<BR>&nbsp;&nbsp; SELECT datename(weekday, '2004-10-15')&nbsp;&nbsp;--返回：星期五</DIV>
<DIV>6. day(), month(),year() --可以与datepart对照一下</DIV>
<DIV>select 当前日期=convert(varchar(10),getdate(),120) <BR>,当前时间=convert(varchar(8),getdate(),114) </DIV>
<DIV>select datename(dw,'2004-10-15') </DIV>
<DIV>select 本年第多少周=datename(week,'2004-10-15')<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,今天是周几=datename(weekday,'2004-10-15')<BR></DIV>
<TABLE>
<TBODY>
<TR>
<TD>函数</TD>
<TD>参数/功能</TD></TR>
<TR>
<TD>GetDate( ) </TD>
<TD>返回系统目前的日期与时间</TD></TR>
<TR>
<TD>DateDiff (interval,date1,date2)</TD>
<TD>以interval 指定的方式，返回date2 与date1两个日期之间的差值 date2-date1</TD></TR>
<TR>
<TD>DateAdd (interval,number,date)</TD>
<TD>以interval指定的方式，加上number之后的日期</TD></TR>
<TR>
<TD>DatePart (interval,date)</TD>
<TD>返回日期date中，interval指定部分所对应的整数值</TD></TR>
<TR>
<TD>DateName (interval,date)</TD>
<TD>返回日期date中，interval指定部分所对应的字符串名称</TD></TR></TBODY></TABLE>
<DIV>参数 interval的设定值如下：</DIV>
<DIV>
<TABLE>
<TBODY>
<TR>
<TD>值</TD>
<TD>缩 写（Sql Server）</TD>
<TD>(Access 和 ASP)</TD>
<TD>说明</TD></TR>
<TR>
<TD>Year</TD>
<TD>Yy</TD>
<TD>yyyy</TD>
<TD>年 1753 ~ 9999</TD></TR>
<TR>
<TD>Quarter</TD>
<TD>Qq</TD>
<TD>q&nbsp;&nbsp;</TD>
<TD>季 1 ~ 4</TD></TR>
<TR>
<TD>Month</TD>
<TD>Mm</TD>
<TD>m&nbsp;&nbsp;</TD>
<TD>月1 ~ 12</TD></TR>
<TR>
<TD>Day of year</TD>
<TD>Dy</TD>
<TD>y </TD>
<TD>一年的日数,一年中的第几日 1-366</TD></TR>
<TR>
<TD>Day</TD>
<TD>Dd</TD>
<TD>d&nbsp;&nbsp;</TD>
<TD>日，1-31</TD></TR>
<TR>
<TD>Weekday</TD>
<TD>Dw</TD>
<TD>w</TD>
<TD>一周的日数，一周中的第几日 1-7</TD></TR>
<TR>
<TD>Week</TD>
<TD>Wk</TD>
<TD>ww </TD>
<TD>周，一年中的第几周 0 ~ 51</TD></TR>
<TR>
<TD>Hour</TD>
<TD>Hh</TD>
<TD>h&nbsp;&nbsp;</TD>
<TD>时0 ~ 23</TD></TR>
<TR>
<TD>Minute</TD>
<TD>Mi</TD>
<TD>n </TD>
<TD>分钟0 ~ 59</TD></TR>
<TR>
<TD>Second</TD>
<TD>Ss</TD>
<TD>s</TD>
<TD>秒 0 ~ 59</TD></TR>
<TR>
<TD>Millisecond</TD>
<TD>Ms</TD>
<TD>-</TD>
<TD>毫秒 0 ~ 999</TD></TR></TBODY></TABLE></DIV>
<DIV>access 和 asp 中用date()和now()取得系统日期时间；其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中，这些函数的用法也类似</DIV>举例：<BR>1.GetDate() 用于sql server :select GetDate()<BR><BR>2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒<BR>DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天<BR><BR>3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1，周六为7)<BR>DatePart('d','2005-7-25 22:56:32')返回值为 25即25号<BR>DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天<BR>DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年&nbsp;<BR>

</DIV>]]></description>
<pubDate>
2008-03-19 18:02:00.0</pubDate>
<guid>
http://myit365.blogcn.com/diary,14489405.shtml</guid>
<comments>
http://myit365.blogcn.com/diary,14489405.shtml#comment</comments>
</item>
</channel>
</rss>