数据库(sql )应用浏览模式: 标准 | 列表

SQL常用的日期格式转换方法

Posted by 欧阳振华 on 2008-10-3 8:46:20
  1. select CONVERT(varchar(12) , getdate(), 101 )  
  2. 09/12/2004  
  3.  
  4. select CONVERT(varchar(12) , getdate(), 103 )  
  5. 12/09/2004  
  6.  
  7. select CONVERT(varchar(12) , getdate(), 104 )  
  8. 12.09.2004  
  9.  
  10. select CONVERT(varchar(12) , getdate(), 105 )  
  11. 12-09-2004  
  12.  
  13. select CONVERT(varchar(12) , getdate(), 106 )  
  14. 12 09 2004  
  15.  
  16. select CONVERT(varchar(12) , getdate(), 107 )  
  17. 09 12, 2004  
  18.  
  19. select CONVERT(varchar(12) , getdate(), 108 )  
  20. 11:06:08  
  21.  
  22. select CONVERT(varchar(12) , getdate(), 109 )  
  23. 09 12 2004 1  
  24.  
  25. select CONVERT(varchar(12) , getdate(), 110 )  
  26. 09-12-2004  
  27.  
  28. select CONVERT(varchar(12) , getdate(), 113 )  
  29. 12 09 2004 1  
  30.  
  31. select CONVERT(varchar(12) , getdate(), 114 )  
  32. 11:06:08.177  

 


Read the rest of this article »

常用于在插入记录时返回ID的@@IDENTITY 和 SCOPE_IDENTITY()

Posted by 欧阳振华 on 2008-9-27 14:12:13

    SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 是相似的函数,因为它们都返回插入到标识列中的值。

    IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。有关详细信息,请参阅 IDENT_CURRENT (Transact-SQL)。

    SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。在使用的时候我们常常不知道用哪一个,  下面的示例介绍如何针对为合并复制发布的数据库中的插入内容使用 @@IDENTITY 和 SCOPE_IDENTITY()。示例中的两个表均在 AdventureWorks 示例数据库中,其中 Person.ContactType 未发布,Sales.Customer 已发布。合并复制将把触发器添加到已发布的表中。因此,@@IDENTITY 可以从复制系统表中的插入内容而非用户表中的插入内容返回值。

    Person.ContactType 表的最大标识值为 20。如果在此表中插入一行,@@IDENTITY 和 SCOPE_IDENTITY() 返回相同的值。
 

  1. USE AdventureWorks;  
  2. GO  
  3. INSERT INTO Person.ContactType ([Name]) VALUES ('Assistant to the Manager')  
  4. GO  
  5. SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]  
  6. GO  
  7. SELECT @@IDENTITY AS [@@IDENTITY]  
  8. GO  
  9.  

下面是结果集:

  1. SCOPE_IDENTITY  
  2. 21  
  3. @@IDENTITY  
  4. 21 

    Sales.Customer 表的最大标识值为 29483。如果在此表中插入一行,@@IDENTITY 和 SCOPE_IDENTITY() 返回不同值。SCOPE_IDENTITY() 从用户表中的插入内容返回值,而 @@IDENTITY 从复制系统表中的插入内容返回值。请对需要访问插入的标识值的应用程序使用 SCOPE_IDENTITY()。

  1. INSERT INTO Sales.Customer ([TerritoryID],[CustomerType]) VALUES (8,'S')  
  2. GO  
  3. SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]  
  4. GO  
  5. SELECT @@IDENTITY AS [@@IDENTITY]  
  6. GO 

下面是结果集:

  1. SCOPE_IDENTITY  
  2. 24984  
  3. @@IDENTITY  
  4. 89  

Read the rest of this article »

Aspnet_regsql 碰到的问题解决

Posted by 欧阳振华 on 2008-9-11 10:25:29

    刚才花了1个小时解决这个问题,找遍了baidu和GOOGLE最后在翻到最后一页给解决了。

症状:

    aspnet_regsql进行到第三步的时候(选择服务器和数据库),不能选择数据库(显示连接失败),在最后一步提示,"安装失败。 出现异常提示如下:

    异常:无法连接到 SQL Server 数据库。System.Web.HttpException: 无法连接到 SQL Server 数据库。 ---> System.Data.SqlClient.SqlException: 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

解决办法:

1、首先打开"SQL Server 外围应用配置器",选择"服务和连接的外围应用配置器",然后将"远程连接"配置为"同时使用 TCP/IP 和 named pipes"

2、然后在aspnet_regsql第三步时,将"服务器名称" 后加上 \SQLEXPRESS 就好了,比如我的就是(KAIBO\SQLEXPRESS)填入数据库名称(以创建好的)直接下一步。这个\SQLEXPRESS参数非常重要,就这个参数折腾了我1个小时。


Read the rest of this article »

在SQL语句中用NOT IN 时应仔细

Posted by 欧阳振华 on 2008-5-7 22:13:40

今天在做博客URL重写的时候,突然发现在涉及日记分类列表分页的时候,不能按要求分页.翻页的时候会出现某些记录的重复.经检测后怀疑问题出现在SQL语句上面,开始的时候一直没有找到语句的毛病.不得以把SQL语句放在SQL查询分析器里检测.

检测的语句为:

USE MYBLOG
SELECT TOP 10 * FROM Article WHERE ArticleID NOT IN (SELECT TOP 0 ArticleID FROM Article ORDER BY ArticleID DESC) AND (ArticleCategoryID=1) ORDER BY ArticleID DESC

我想让此语句实现的功能是查找ArticleCategoryID=1的日记的前10条记录.得到的结果:如右图

当我把语句改成:

USE MYBLOG
SELECT TOP 10 * FROM Article WHERE ArticleID NOT IN (SELECT TOP 10 ArticleID FROM Article ORDER BY ArticleID DESC) AND


Read the rest of this article »

用SQL语句实现文章的归档功能

Posted by 欧阳振华 on 2008-4-13 14:33:19

        今天想为博客做一个文章归档功能,下午写了下SQL语句.在SQL Server2005里测试通过.明天有时间了用在博客里来.

SQL语句如下:

USE MYBLOG

SELECT COUNT(*) AS MUN,str(DATEPART(year, PublishDate))+str(DATEPART(month, PublishDate)) as TM

FROM Article

GROUP BY str(DATEPART(year,PublishDate))+str(DATEPART(month,PublishDate))

下图是在SQL Server2005里的查询结果:


Read the rest of this article »

Sql Server中的日期与时间函数

Posted by 欧阳振华 on 2007-6-5 22:02:15

1.  当前系统日期、时间
    select getdate() 

2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值
   例如:向日期加上2天
   select dateadd(day,2,'2004-10-15')  --返回:2004-10-17 00:00:00.000


Read the rest of this article »