﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我的Blog我做主^_^-文章分类-数据库</title><link>http://www.blogjava.net/wyz191/category/18632.html</link><description>走向一条通往JAVA的不归路...</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:45:48 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:45:48 GMT</pubDate><ttl>60</ttl><item><title>SQL Server中全角和半角字符的比较问题 </title><link>http://www.blogjava.net/wyz191/articles/99355.html</link><dc:creator>java_蝈蝈</dc:creator><author>java_蝈蝈</author><pubDate>Mon, 12 Feb 2007 00:15:00 GMT</pubDate><guid>http://www.blogjava.net/wyz191/articles/99355.html</guid><wfw:comment>http://www.blogjava.net/wyz191/comments/99355.html</wfw:comment><comments>http://www.blogjava.net/wyz191/articles/99355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wyz191/comments/commentRss/99355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wyz191/services/trackbacks/99355.html</trackback:ping><description><![CDATA[
		<p>/*------------------------------------------------------------------------------------</p>
		<p>/*欢迎转载，请保留本声明信息</p>
		<p>/*作者：翁  彦  <a href="mailto:enhydraboy@yahoo.com.cn">enhydraboy@yahoo.com.cn</a></p>
		<p>/*------------------------------------------------------------------------------------</p>
		<p>这是一个在我实际一个项目中遇到的问题。03BHL01001（上海）和03BHL01001(上海)比较的结果是一样的。导致引起的重复的主键问题。</p>
		<p>03BHL01001（上海）和03BHL01001(上海)差别，就在于前者的括号是全角的括号字符，后者是半角的括号字符。全角的括号字符和半角的括号字符的ascii码显然是不一样的。全角的（ ASCII码是0xA3A8 ，而半角的( 是0x28。那么为什么SQL Server会认为是一样的呢？</p>
		<p>问题其实就出在数据库的排序规则上，让我们在仔细研读一下SQL Server的文档。SQL Server的排序规则由这样几部分组成，代码页、区分大小写、区分重音、区分宽度。最后一个在SQL Server的联机帮助中没有进一步提及，其实本篇遇到的问题就是由于这个原因造成的。区分宽度：指定 SQL Server 区分相同字符的单字节表示法（半角）和双字节表示法（全角）。如果没有选择，则 SQL Server 将认为相同字符的单字节表示法和双字节表示法等效。</p>
		<p>缺省，安装SQL Server中文版的时候，SQL Server帮你选择的排序规则是Chinese_PRC_CI_AS(Chinese-PRC, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive),是中文，不区分大小写、区分重音、不区分假名、不区分宽度。因此，自然就认同03BHL01001（上海）=03BHL01001(上海)。</p>
		<p>所以，正确的选择应该是，后缀为WS的中文排序规则。本例中我们应该选择Chinese_PRC_CI_AS_WS。</p>
		<p>我们来看一下，指定排序规则是Chinese_PRC_CI_AS_WS后，怎么样了？</p>
		<p> </p>
		<p>select 1 where '03BHL01001（上海）'='03BHL01001(上海)' </p>
		<p>collate Chinese_PRC_CI_AS_WS</p>
		<p> </p>
		<p>
				<b>----------- </b>
		</p>
		<p>
				<b>
				</b> </p>
		<p>
				<b>（所影响的行数为 0 </b>
				<b>行）</b>
		</p>
		<p>看来这个问题解决了。</p>
		<p>
				<b>重要提示：</b>
		</p>
		<p>如何察看使用那个排序规则呢？可以使用下面的SQL语句。</p>
		<p>SELECT *</p>
		<p>FROM ::fn_helpcollations()</p>
		<p>可以查询所有排序规则的信息。</p>
		<p>查出所有中文排序规则的信息</p>
		<p>SELECT * FROM</p>
		<p>(</p>
		<p>SELECT *</p>
		<p>FROM ::fn_helpcollations()) A</p>
		<p>WHERE name like 'Chinese%'</p>
<img src ="http://www.blogjava.net/wyz191/aggbug/99355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wyz191/" target="_blank">java_蝈蝈</a> 2007-02-12 08:15 <a href="http://www.blogjava.net/wyz191/articles/99355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySql--------怎样设列的默认值为Now()</title><link>http://www.blogjava.net/wyz191/articles/mysql.html</link><dc:creator>java_蝈蝈</dc:creator><author>java_蝈蝈</author><pubDate>Fri, 19 Jan 2007 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/wyz191/articles/mysql.html</guid><wfw:comment>http://www.blogjava.net/wyz191/comments/94950.html</wfw:comment><comments>http://www.blogjava.net/wyz191/articles/mysql.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wyz191/comments/commentRss/94950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wyz191/services/trackbacks/94950.html</trackback:ping><description><![CDATA[
		<p>MySQL目前不支持列的Default 为函数的形式,<br />如达到你某列的默认值为当前更新日期与时间的功能,<br />你可以使用TIMESTAMP列类型<br />下面就详细说明TIMESTAMP列类型</p>
		<p>
				<br />TIMESTAMP列类型<br />TIMESTAMP值可以从1970的某时的开始一直到2037年，精度为一秒，其值作为数字显示。<br />TIMESTAMP值显示尺寸的格式如下表所示：<br />：<br />+---------------+----------------+<br />| 列类型        | 显示格式       |<br />| TIMESTAMP(14) | YYYYMMDDHHMMSS |  <br />| TIMESTAMP(12) | YYMMDDHHMMSS   |<br />| TIMESTAMP(10) | YYMMDDHHMM     |<br />| TIMESTAMP(8)  | YYYYMMDD       |<br />| TIMESTAMP(6)  | YYMMDD         |<br />| TIMESTAMP(4)  | YYMM           |<br />| TIMESTAMP(2)  | YY             |<br />+---------------+----------------+<br />“完整”TIMESTAMP格式是14位，但TIMESTAMP列也可以用更短的显示尺寸创造<br />最常见的显示尺寸是6、8、12、和14。<br />你可以在创建表时指定一个任意的显示尺寸，但是定义列长为0或比14大均会被强制定义为列长14。<br />列长在从1～13范围的奇数值尺寸均被强制为下一个更大的偶数。</p>
		<p>列如：<br />定义字段长度     强制字段长度<br />TIMESTAMP(0) -&gt;  TIMESTAMP(14)<br />TIMESTAMP(15)-&gt;  TIMESTAMP(14)<br />TIMESTAMP(1) -&gt;  TIMESTAMP(2)<br />TIMESTAMP(5) -&gt;  TIMESTAMP(6)</p>
		<p>所有的TIMESTAMP列都有同样的存储大小，<br />使用被指定的时期时间值的完整精度（14位）存储合法的值不考虑显示尺寸。<br />不合法的日期，将会被强制为0存储<br />这有几个含意： <br />    1、虽然你建表时定义了列TIMESTAMP(8)，但在你进行数据插入与更新时TIMESTAMP列<br />           实际上保存了14位的数据（包括年月日时分秒），<br />           只不过在你进行查询时MySQL返回给你的是8位的年月日数据。<br />           如果你使用ALTER TABLE拓宽一个狭窄的TIMESTAMP列，以前被“隐蔽”的信息将被显示。 <br />    2、同样，缩小一个TIMESTAMP列不会导致信息失去，除了感觉上值在显示时，较少的信息被显示出。 <br />    3、尽管TIMESTAMP值被存储为完整精度，直接操作存储值的唯一函数是UNIX_TIMESTAMP()；<br />           由于MySQL返回TIMESTAMP列的列值是进过格式化后的检索的值，<br />           这意味着你可能不能使用某些函数来操作TIMESTAMP列（例如HOUR()或SECOND()），<br />           除非TIMESTAMP值的相关部分被包含在格式化的值中。<br />           例如，一个TIMESTAMP列只有被定义为TIMESTAMP(10)以上时，TIMESTAMP列的HH部分才会被显示，<br />           因此在更短的TIMESTAMP值上使用HOUR()会产生一个不可预知的结果。<br />    4、不合法TIMESTAMP值被变换到适当类型的“零”值(00000000000000)。（DATETIME,DATE亦然）        </p>
		<p>你可以使用下列语句来验证：<br />CREATE TABLE test ('id' INT (3) UNSIGNED AUTO_INCREMENT, 'date1' TIMESTAMP (8) PRIMARY KEY('id'));<br />INSERT INTO test SET id = 1;<br />SELECT * FROM test;<br />+----+----------------+<br />| id | date1          |<br />+----+----------------+<br />|  1 | 20021114       |<br />+----+----------------+<br />ALTER TABLE test CHANGE 'date1' 'date1' TIMESTAMP(14);<br />SELECT * FROM test;<br />+----+----------------+<br />| id | date1          |<br />+----+----------------+<br />|  1 | 20021114093723 |<br />+----+----------------+</p>
		<p> </p>
		<p>你可以使用TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。<br />如果你有多个TIMESTAMP列，只有第一个自动更新。 <br />自动更新第一个TIMESTAMP列在下列任何条件下发生： </p>
		<p>   1、列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。 <br />   2、列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。<br />       （注意一个UPDATE设置一个列为它已经有的值，<br />        这将不引起TIMESTAMP列被更新，<br />        因为如果你设置一个列为它当前的值，MySQL为了效率而忽略更改。） <br />   3、你明确地设定TIMESTAMP列为NULL. <br />   4、除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间，只要将列设为NULL，或NOW()。</p>
		<p>
				<br />CREATE TABLE test (<br />     'id' INT (3) UNSIGNED AUTO_INCREMENT, <br />     'date1' TIMESTAMP (14),<br />     'date2' TIMESTAMP (14),<br />      PRIMARY KEY('id')<br />      );</p>
		<p>INSERT INTO test (id, date1, date2) VALUES (1, NULL, NULL);<br />INSERT INTO test SET id= 2;<br />+----+----------------+----------------+<br />| id | date1          | date2          |<br />+----+----------------+----------------+<br />|  1 | 20021114093723 | 20021114093723 |<br />|  2 | 20021114093724 | 00000000000000 |<br />+----+----------------+----------------+<br />-&gt;第一条指令因设date1、date2为NULL,所以date1、date2值均为当前时间<br />  第二条指令因没有设date1、date2列值，第一个TIMESTAMP列date1为更新为当前时间，<br />    而二个TIMESTAMP列date2因日期不合法而变为“00000000000000”</p>
		<p>
				<br />UPDATE test SET id= 3 WHERE id=1;<br />+----+----------------+----------------+<br />| id | date1          | date2          |<br />+----+----------------+----------------+<br />|  3 | 20021114094009 | 20021114093723 |<br />|  2 | 20021114093724 | 00000000000000 |<br />+----+----------------+----------------+<br />-&gt;这条指令没有明确地设定date2的列值，所以第一个TIMESTAMP列date1将被更新为当前时间</p>
		<p>
				<br />UPDATE test SET id= 1,date1=date1,date2=NOW() WHERE id=3;<br />+----+----------------+----------------+<br />| id | date1          | date2          |<br />+----+----------------+----------------+<br />|  1 | 20021114094009 | 20021114094320 |<br />|  2 | 20021114093724 | 00000000000000 |<br />+----+----------------+----------------+<br />-&gt;这条指令因设定date1=date1，所以在更新数据时date1列值并不会发生改变<br />  而因设定date2=NOW()，所以在更新数据时date2列值会被更新为当前时间<br />  此指令等效为 UPDATE test SET id= 1,date1=date1,date2=NULL WHERE id=3;<br />  <br />因MySQL返回的 TIMESTAMP 列为数字显示形式，<br />你可以用DATE_FROMAT()函数来格式化 TIMESTAMP 列</p>
		<p>SELECT id,DATE_FORMAT(date1,'%Y-%m-%d %H:%i:%s') As date1,<br />       DATE_FORMAT(date2,'%Y-%m-%d %H:%i:%s') As date2 FROM test;<br />+----+---------------------+---------------------+<br />| id | date1               | date2               |<br />+----+---------------------+---------------------+<br />|  1 | 2002-11-14 09:40:09 | 2002-11-14 09:43:20 |<br />|  2 | 2002-11-14 09:37:24 | 0000-00-00 00:00:00 |<br />+----+---------------------+---------------------+</p>
		<p>SELECT id,DATE_FORMAT(date1,'%Y-%m-%d') As date1,<br />       DATE_FORMAT(date2,'%Y-%m-%d') As date2 FROM test;<br />       <br />+----+-------------+-------------+<br />| id | date1       | date2       |<br />+----+-------------+-------------+<br />|  1 | 2002-11-14  | 2002-11-14  |<br />|  2 | 2002-11-14  | 0000-00-00  |<br />+----+-------------+-------------+</p>
		<p>
				<br />在某种程度上，你可以把一种日期类型的值赋给一个不同的日期类型的对象。<br />然而，而尤其注意的是：值有可能发生一些改变或信息的损失： </p>
		<p>  1、如果你将一个DATE值赋给一个DATETIME或TIMESTAMP对象，<br />     结果值的时间部分被设置为'00:00:00'，<br />     因为DATE值中不包含有时间信息。 <br />     <br />  2、如果你将一个DATETIME或TIMESTAMP值赋给一个DATE对象，<br />     结果值的时间部分被删除，因为DATE类型不存储时间信息。 <br />  <br />  3、尽管DATETIME, DATE和TIMESTAMP值全都可以用同样的格式集来指定，<br />     但所有类型不都有同样的值范围。<br />     例如，TIMESTAMP值不能比1970早，也不能比2037晚，<br />     这意味着，一个日期例如'1968-01-01'，当作为一个DATETIME或DATE值时它是合法的，<br />     但它不是一个正确TIMESTAMP值！并且如果将这样的一个对象赋值给TIMESTAMP列，它将被变换为0。 </p>
		<p>当指定日期值时，当心某些缺陷： </p>
		<p>  1、允许作为字符串指定值的宽松格式能被欺骗。<br />     例如，，因为“:”分隔符的使用，值'10:11:12'可能看起来像时间值，<br />     但是如果在一个日期中使用，上下文将作为年份被解释成'2010-11-12'。<br />     值'10:45:15'将被变换到'0000-00-00'，因为'45'不是一个合法的月份。 <br />     <br />  2、以2位数字指定的年值是模糊的，因为世纪是未知的。<br />     MySQL使用下列规则解释2位年值： <br />       在00-69范围的年值被变换到2000-2069。 <br />       在范围70-99的年值被变换到1970-1999。 <br /></p>
		<p> </p>
<img src ="http://www.blogjava.net/wyz191/aggbug/94950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wyz191/" target="_blank">java_蝈蝈</a> 2007-01-19 16:02 <a href="http://www.blogjava.net/wyz191/articles/mysql.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql_1:InnoDB 介绍</title><link>http://www.blogjava.net/wyz191/articles/InnoDB.html</link><dc:creator>java_蝈蝈</dc:creator><author>java_蝈蝈</author><pubDate>Thu, 18 Jan 2007 01:08:00 GMT</pubDate><guid>http://www.blogjava.net/wyz191/articles/InnoDB.html</guid><wfw:comment>http://www.blogjava.net/wyz191/comments/94541.html</wfw:comment><comments>http://www.blogjava.net/wyz191/articles/InnoDB.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wyz191/comments/commentRss/94541.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wyz191/services/trackbacks/94541.html</trackback:ping><description><![CDATA[InnoDB 是 MySQL 上第一个提供外键约束的引擎，除了提供事务处理外，InnoDB 还支持行锁，提供和 Oracle 一样的一致性的不加锁读取，能增加并发读的用户数量并提高性能，不会增加锁的数量。<br />InnoDB 的设计目标是处理大容量数据时最大化性能，它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。<br /><br />InnoDB 是一套放在 MySQL 后台的完整数据库系统，InnoDB 有它自己的缓冲池，能缓冲数据和索引，InnoDB 还把数据和索引存放在表空间里面，可能包含好几个文件，这和 MyISAM 表完全不同，在 MyISAM 中，表被存放在单独的文件中，InnoDB 表的大小只受限于操作系统文件的大小，一般为 2GB。<br /><br />MySQL 的源代码中，从 3.23.34a 开始包含 InnoDB 表，并在 MySQL -Max 的二进制版本中激活。<br /><br />如果你使用源码版本下载，自己编译的话，需要采用 --with-innodb 选项：<br /><br />./configure --with-innodb<br /><br />在 MySQL-Max-3.23 上使用 InnoDB 时，必须在 my.cnf 或者 my.ini 文件中的 [mysqld] 小节指定启动参数：<br /><br />innodb_data_file_path=ibdata:30M<br /><br />InnoDB 以 GNU GPL 版本 2 的许可发布。<br /><br />MySQL-Max-3.23: 这个产品可以用于生产环境使用。<br />MySQL-4.0: 这个是开发版本，和 3.23 相比增加了多表删除，查询结果缓冲，SSL 通信，4.0.1 为 Beta 版本。<br /><br />在 3.23 中，必须至少指定 innodb_data_file_path 的大小，但是在 MySQL-4.0 中这个值默认为 64MB，文件名为 ibdata1。<br /><br />为了得到好的性能，必须指定 InnoDB 参数，例如：<br />对于一台 128MB 内存， 10GB 硬盘的 Windows NT 机器的配置如下：<br /><br />[mysqld]<br /><br />innodb_data_home_dir = c:\ibdata<br /># 数据文件必须能容下数据和索引<br />innodb_data_file_path = ibdata1:2000M;ibdata2:2000M<br /># 设置缓冲池大小为内存的 50 - 80 %<br />set-variable = innodb_buffer_pool_size=70M<br />set-variable = innodb_additional_mem_pool_size=10M<br />innodb_log_group_home_dir = c:\iblogs<br /># log_arch_dir 必须和 log_group_home_dir 一样<br />innodb_log_arch_dir = c:\iblogs<br />innodb_log_archive=0<br />set-variable = innodb_log_files_in_group=3<br /># 设置日志文件大小为缓冲池的 15%。<br />set-variable = innodb_log_file_size=10M<br />set-variable = innodb_log_buffer_size=8M<br /># 如果丢失最近的几个事务影响不大的话，设置 flush_log_at_trx_commit 为 0。<br />innodb_flush_log_at_trx_commit=1<br />set-variable = innodb_file_io_threads=4<br />set-variable = innodb_lock_wait_timeout=50<br /><br />注意 InnoDB 不会自己建立目录，你必须使用操作系统命令建立目录，并注意 MySQL 的权限。<br /><br />第一次运行 MySQL 时，建议使用命令行方式。在 Windows 下，用命令行开启：<br /><br />C:\MYSQL&gt;mysqld-max --standalone --console<br /><br />在 Windows 下设置配置文件的原则是：<br />my.cnf 和 my.ini 只能是一个有效。<br />my.cnf 放在 C: 根目录下， my.ini 文件放在 WINDIR 目录下，C:\WINDOWS 或者 C:\WINNT。<br /><br />在 Linux 下面，初始配置文件按下面的顺序搜索：<br /><br />/etc/my.cnf 全局选项<br />COMPILATION_DATADIR/my.cnf 服务器范围的选项<br />defaults-extra-file 采用 --defaults-extra-file=.... 的文件<br />~/.my.cnf 用户指定的选项<br /><br />假设你有一台 512MB 内存，三台 20GB 硬盘(路径分别为："/"，"/dr2"，"/dr3“)的服务器，设置的例子为：<br /><br />[mysqld]<br />innodb_data_home_dir = /<br />innodb_data_file_path = ibdata/ibdata1:2000M;dr2/ibdata/ibdata2:2000M<br />set-variable = innodb_buffer_pool_size=350M<br />set-variable = innodb_additional_mem_pool_size=20M<br />innodb_log_group_home_dir = /dr3/iblogs<br />innodb_log_arch_dir = /dr3/iblogs<br />innodb_log_archive=0<br />set-variable = innodb_log_files_in_group=3<br />set-variable = innodb_log_file_size=50M<br />set-variable = innodb_log_buffer_size=8M<br />innodb_flush_log_at_trx_commit=1<br />set-variable = innodb_file_io_threads=4<br />set-variable = innodb_lock_wait_timeout=50<br />#innodb_flush_method=fdatasync<br />#innodb_fast_shutdown=1<br />#set-variable = innodb_thread_concurrency=5<br /><br />为了提升性能，我们把日志文件和数据文件放在不同的磁盘，另外还可以采用裸的磁盘分区来存储数据以提升性能。<br /><br />需要提醒的是，在 Linux x86 上不要把内存设置太高，glibc 会把进程堆增长到线程堆栈之上，能把服务器给搞垮，下面的值接近于 2GB 时就很危险：<br /><br />innodb_buffer_pool_size + key_buffer +<br />max_connections * (sort_buffer + record_buffer) + max_connections * 2 MB<br /><br />每个线程将使用 2MB(二进制版本为 256 KB) 的堆栈，在最坏的情况下，还会使用 sort_buffer + record_buffer 的附加内存。<br /><br />后续的文章，我们还将介绍 InnoDB 表的建立，MyISAM 到 InnoDB 的转换，外键约束的使用，自动增长列的操作，InnoDB 数据库的备份和恢复，事务的使用，性能调优等内容。<br /><br />请继续关注，FreeLAMP.com 为您提供的企业级的开放源码数据库解决方案。<br /><img src ="http://www.blogjava.net/wyz191/aggbug/94541.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wyz191/" target="_blank">java_蝈蝈</a> 2007-01-18 09:08 <a href="http://www.blogjava.net/wyz191/articles/InnoDB.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sql Server中的日期与时间函数 </title><link>http://www.blogjava.net/wyz191/articles/91712.html</link><dc:creator>java_蝈蝈</dc:creator><author>java_蝈蝈</author><pubDate>Thu, 04 Jan 2007 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/wyz191/articles/91712.html</guid><wfw:comment>http://www.blogjava.net/wyz191/comments/91712.html</wfw:comment><comments>http://www.blogjava.net/wyz191/articles/91712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wyz191/comments/commentRss/91712.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wyz191/services/trackbacks/91712.html</trackback:ping><description><![CDATA[
		<div>
				<p>Sql Server中的日期与时间函数 <br />1. 当前系统日期、时间 <br />select getdate() </p>
				<p>2. dateadd 在向指定日期加上一段时间的基础上，返回新的 datetime 值<br />例如：向日期加上2天 <br />select dateadd(day,2,'2004-10-15') --返回：2004-10-17 00:00:00.000 </p>
				<p>3. datediff 返回跨两个指定日期的日期和时间边界数。<br />select datediff(day,'2004-09-01','2004-09-18') --返回：17</p>
				<p>4. datepart 返回代表指定日期的指定日期部分的整数。<br />SELECT DATEPART(month, '2004-10-15') --返回 10</p>
				<p>5. datename 返回代表指定日期的指定日期部分的字符串<br />SELECT datename(weekday, '2004-10-15') --返回：星期五</p>
				<p>6. day(), month(),year() --可以与datepart对照一下</p>
				<p>select 当前日期=convert(varchar(10),getdate(),120) <br />,当前时间=convert(varchar(8),getdate(),114) </p>
				<p>select datename(dw,'2004-10-15') </p>
				<p>select 本年第多少周=datename(week,'2004-10-15')<br />,今天是周几=datename(weekday,'2004-10-15')<br /></p>
				<table id="Table1" height="197" cellspacing="1" cellpadding="3" width="376" bgcolor="#666666" border="0">
						<tbody>
								<tr>
										<td bgcolor="#cccccc" height="30">
												<b>函数</b>
										</td>
										<td bgcolor="#cccccc" height="30">
												<b>参数/功能</b>
										</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">GetDate( ) </td>
										<td bgcolor="#ffffff">返回系统目前的日期与时间</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">DateDiff (interval,date1,date2)</td>
										<td bgcolor="#ffffff">以interval 指定的方式，返回date2 与date1两个日期之间的差值 date2-date1</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">DateAdd (interval,number,date)</td>
										<td bgcolor="#ffffff">以interval指定的方式，加上number之后的日期</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">DatePart (interval,date)</td>
										<td bgcolor="#ffffff">返回日期date中，interval指定部分所对应的整数值</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">DateName (interval,date)</td>
										<td bgcolor="#ffffff">返回日期date中，interval指定部分所对应的字符串名称</td>
								</tr>
						</tbody>
				</table>
				<p>参数 interval的设定值如下：</p>
				<p>
				</p>
				<table id="Table2" cellspacing="1" cellpadding="3" width="492" bgcolor="#999999" border="0">
						<tbody>
								<tr>
										<td width="77" bgcolor="#cccccc" height="30">
												<b>值</b>
										</td>
										<td width="144" bgcolor="#cccccc" height="30">
												<b>缩 写（Sql Server）</b>
										</td>
										<td width="118" bgcolor="#cccccc" height="30">
												<b>Access 和 ASP</b>
										</td>
										<td width="124" bgcolor="#cccccc" height="30">
												<b>说明</b>
										</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Year</td>
										<td bgcolor="#ffffff">Yy</td>
										<td bgcolor="#ffffff">yyyy</td>
										<td bgcolor="#ffffff">年 1753 ~ 9999</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Quarter</td>
										<td bgcolor="#ffffff">Qq</td>
										<td bgcolor="#ffffff">q </td>
										<td bgcolor="#ffffff">季 1 ~ 4</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Month</td>
										<td bgcolor="#ffffff">Mm</td>
										<td bgcolor="#ffffff">m </td>
										<td bgcolor="#ffffff">月1 ~ 12</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Day of year</td>
										<td bgcolor="#ffffff">Dy</td>
										<td bgcolor="#ffffff">y </td>
										<td bgcolor="#ffffff">一年的日数,一年中的第几日 1-366</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Day</td>
										<td bgcolor="#ffffff">Dd</td>
										<td bgcolor="#ffffff">d </td>
										<td bgcolor="#ffffff">日，1-31</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Weekday</td>
										<td bgcolor="#ffffff">Dw</td>
										<td bgcolor="#ffffff">w</td>
										<td bgcolor="#ffffff">一周的日数，一周中的第几日 1-7</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Week</td>
										<td bgcolor="#ffffff">Wk</td>
										<td bgcolor="#ffffff">ww </td>
										<td bgcolor="#ffffff">周，一年中的第几周 0 ~ 51</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Hour</td>
										<td bgcolor="#ffffff">Hh</td>
										<td bgcolor="#ffffff">h </td>
										<td bgcolor="#ffffff">时0 ~ 23</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Minute</td>
										<td bgcolor="#ffffff">Mi</td>
										<td bgcolor="#ffffff">n </td>
										<td bgcolor="#ffffff">分钟0 ~ 59</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Second</td>
										<td bgcolor="#ffffff">Ss</td>
										<td bgcolor="#ffffff">s</td>
										<td bgcolor="#ffffff">秒 0 ~ 59</td>
								</tr>
								<tr>
										<td bgcolor="#ffffff">Millisecond</td>
										<td bgcolor="#ffffff">Ms</td>
										<td bgcolor="#ffffff">-</td>
										<td bgcolor="#ffffff">毫秒 0 ~ 999</td>
								</tr>
						</tbody>
				</table>
				<p>
				</p>
				<p>access 和 asp 中用date()和now()取得系统日期时间；其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中，这些函数的用法也类似</p>举例：<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年</div>
<img src ="http://www.blogjava.net/wyz191/aggbug/91712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wyz191/" target="_blank">java_蝈蝈</a> 2007-01-04 11:14 <a href="http://www.blogjava.net/wyz191/articles/91712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC连接SQLServer时出现错误Error establishing socket.的解决方案</title><link>http://www.blogjava.net/wyz191/articles/Errorestablishingsocket.html</link><dc:creator>java_蝈蝈</dc:creator><author>java_蝈蝈</author><pubDate>Fri, 22 Dec 2006 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/wyz191/articles/Errorestablishingsocket.html</guid><wfw:comment>http://www.blogjava.net/wyz191/comments/89528.html</wfw:comment><comments>http://www.blogjava.net/wyz191/articles/Errorestablishingsocket.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wyz191/comments/commentRss/89528.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wyz191/services/trackbacks/89528.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一次在重装系统并重新搭建						JAVA						运行环境后，为了测试运行环境是否搭建好，写了一个非常简单的						JDBC						程序测试数据库连接。																		IDE						：						Eclipse3.2																		DB						：						SQLS...&nbsp;&nbsp;<a href='http://www.blogjava.net/wyz191/articles/Errorestablishingsocket.html'>阅读全文</a><img src ="http://www.blogjava.net/wyz191/aggbug/89528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wyz191/" target="_blank">java_蝈蝈</a> 2006-12-22 14:47 <a href="http://www.blogjava.net/wyz191/articles/Errorestablishingsocket.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>