SQL日期和时间函数

1.一个月第一天的
Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

2.本周的星期一
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

3.一年的第一天
Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

4.季度的第一天
Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

5.当天的半夜
Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

6.上个月的最后一天
Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

7.去年的最后一天
Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

8.本月的最后一天
Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

9.本年的最后一天
Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

10.本月的第一个星期一
select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

返回当前日期和时间
通过函数GETDATE(),你可以获得当前的日期和时间。函数GETDATE()可以用来作为DATEDIME型字段的缺省值。这对插入记录时保存当时的时间是有用的。要建立一个表,其中的记录包含有当前的日期和时间,可以添加一个DATETIME型字段,指定其缺省值为函数GETDATE()的返回值,就象这样:

Create TABLE site_log (
username VARCHAR(40),
useractivity VARCHAR(100),
entrydate DATETIME DEFAULT GETDATE())

转换日期和时间
函数GETDATE()的返回值在显示时只显示到秒。实际上,SQL Sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)。
要得到不同格式的日期和时间,你需要使用函数CONVERT()。例如,当下面的这个语句执行时,显示的时间将包括毫秒:

Select CONVERT(VARCHAR(30),GETDATE(),9)

注意例子中数字9的使用。这个数字指明了在显示日期和时间时使用哪种日期和时间格式。当这个语句执行时,将显示如下的日期和时间:
Nov 30 1997 3:29:55:170AM
(1 row(s) affected)

在函数CONVERT()中你可以使用许多种不同风格的日期和时间格式。下表显示了所有的格式。

日期和时间的类型:
类型值 标准 输出
0 Default mon dd yyyy hh:miAM
1 USA mm/dd/yy
2 ANSI yy.mm.dd
3 British/French dd/mm/yy
4 German dd.mm.yy
5 Italian dd-mm-yy
6 - dd mon yy
7 - mon dd,yy
8 - hh:mi:ss
9 Default + milliseconds--mon dd yyyy
hh:mi:ss:mmmAM(or )
10 USA mm-dd-yy
11 JAPAN yy/mm/dd
12 ISO yymmdd
13 Europe Default + milliseconds--dd mon yyyy
hh:mi:ss:mmm(24h)
14 - hh:mi:ss:mmm(24h)

类型0,9,和13总是返回四位的年。对其它类型,要显示世纪,把style值加上100。类型13和14返回24小时时钟的时间。类型0,7,和13返回的月份用三位字符表示(用Nov代表November).

对表中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如,00年将显示为2000年)。例如,要按日本标准显示日期,包括世纪,你应使用如下的语句:

Select CONVERT(VARCHAR(30),GETDATE(),111)

在这个例子中,函数CONVERT()把日期格式进行转换,显示为1997/11/30

抽取日期和时间
在许多情况下,你也许只想得到日期和时间的一部分,而不是完整的日期和时间。为了抽取日期的特定部分,你可以使用函数DATEPART(),象这样:

Select site_name ‘Site Name’,
DATEPART(mm,site_entrydate) ‘Month Posted’ FROM site_directory

函数DATEPART()的参数是两个变量。第一个变量指定要抽取日期的哪一部分;第二个变量是实际的数据。在这个例子中,函数DATEPART()抽取月份,因为mm代表月份。下面是这个Select 语句的输出结果:

Site Name Month Posted
………………………………………………………………
Yahoo 2
Microsoft 5
Magicw3 5
(3 row(s) affected)

Month Posted列显示了每个站点被查询的月份。函数DATEPART()的返回值是一个整数。你可以用这个函数抽取日期的各个不同部分,如下表所示。

日期的各部分及其简写
日期部分 简写 值
year yy 1753--9999
quarter qq 1--4
month mm 1--12
day of year dy 1--366
day dd 1--31
week wk 1--53
weekday dw 1--7(Sunday--Saturday)
hour hh 0--23
minute mi 0--59
second ss 0--59
milisecond ms 0--999

当你需要进行日期和时间的比较时,使用函数DATEPART()返回整数是有用的。但是,上例中的查询结果(2,5)不是十分易读。要以更易读的格式得到部分的日期和时间,你可以使用函数DATENAME(),如下例所示:

Select site_name ‘Site Name’
DATENAME(mm,site_entrydate) ‘Month Posted’
FROM site_directory

函数DATENAME()和函数DATEPART()接收同样的参数。但是,它的返回值是一个字符串,而不是一个整数。下面是上例该用DATENAME()得到的结果:

Site Name Month Postec
………………………………………………………………….
Yahoo February
Microsoft June
Magicw3 June
(3 row(s) affected)

你也可以用函数DATENAE()来抽取一个星期中的某一天。下面的这个例子同时抽取一周中的某一天和日期中的月份:

Select site_name ‘Site Name’,
DATENAME(dw,site_entrydate)+ ‘-’ + DATENAME(mm,site_entrydate)
‘Day and Month Posted’ FORM site_directory

这个例子执行时,将返回如下的结果:

Site Name Day and Month Posted
………………………………………………………………………
Yahoo Friday - February
Microsoft Tuesday - June
Magicw3 Monday - June
(3 row(s) affected)

返回日期和时间范围
当你分析表中的数据时,你也许希望取出某个特定时间的数据。你也许对特定的某一天中――比如说2000年12月25日――访问者在你站点上的活动感兴趣。要取出这种类型的数据,你也许会试图使用这样的Select语句:

Select * FROM weblog Where entrydate="12/25/20000"

不要这样做。这个Select语句不会返回正确的记录――它将只返回日期和时间是12/25/2000 12:00:00:000AM的记录。换句话说,只有刚好在午夜零点输入的记录才被返回。

问题是SQL Sever将用完整的日期和时间代替部分日期和时间。例如,当你输入一个日期,但不输入时间时,SQL Sever将加上缺省的时间“12:00:00:000AM”。当你输入一个时间,但不输入日期时,SQL Sever将加上缺省的日期“Jan 1 1900”。
要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一点。例如,下面的这个Select 语句将能返回正确的记录:

Select * FROM weblog
Where entrydate>=”12/25/2000” AND entrydate<”12/26/2000”

这个语句可以完成任务,因为它选取的是表中的日期和时间大于等于12/25/2000 12:00:00:000AM并小于12/26/2000 12:00:00:000AM的记录。换句话说,它将正确地返回2000年圣诞节这一天输入的每一条记录。
另一种方法是,你可以使用LIKE来返回正确的记录。通过在日期表达式中包含通配符“%”,你可以匹配一个特定日期的所有时间。这里有一个例子:

Select * FROM weblog Where entrydate LIKE ‘Dec 25 2000%’

这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。
使用这两种匹配日期和时间范围的函数,你可以选择某个月,某一天,某一年,某个小时,某一分钟,某一秒,甚至某一毫秒内输入的记录。但是,如果你使用LIKE 来匹配秒或毫秒,你首先需要使用函数CONVERT()把日期和时间转换为更精确的格式(参见前面“转换日期和时间”一节)。

比较日期和时间
最后,还有两个日期和时间函数对根据日期和时间取出记录是有用的。使用函数DATEADD()和DATEDIFF(),你可以比较日期的早晚。例如,下面的Select语句将显示表中的每一条记录已经输入了多少个小时:

Select entrydate ‘Time Entered’
DATEDIFF(hh,entrydate,GETDATE()) ‘Hours Ago’ FROM weblog

如果当前时间是2000年11月30号下午6点15分,则会返回如下的结果:

Time Entered Hours Ago
…………………………………………………..
Dec 30 2000 4:09PM 2
Dec 30 2000 4:13PM 2
Dec 1 2000 4:09PM 698
(3 row(s) affected)

函数DADEDIFF()的参数是三个变量。第个变量指定日期的某一部分。在这个例子中,是按小时对日期进行比较,(要了解日期各部分的详细内容,请参考表11.2)在日期2000年11月1日和2000年11月30日的指定时间之间有689个小时。另外两个参数是要进行比较的时间。为了返回一个正数,较早的时间应该先给。
函数DATEADD()把两个日期相加。当你需要计算截止日期这一类的数据时,这个函数是有用处的。假如你要查询一个月前注册用户的记录,你可以使用如下的Select语句:

Select username ‘User Name’,
DATEADD(mm,1,firstvisit_date) ‘Registration Expires’
FROM registration_table

函数DATEADD()的参数有三个变量。第一个变量代表日期的某一部分,这个例子用到了代表月份的mm。第二个变量指定了时间的间隔――在本例中是一个月。最后一个变量是一个日期,在这个例子中,日期是取自DATETIME型字段firstvisit_date.假设当前日期是June 30,2000,这个语句将返回如下的内容:

User Name Registration Expires
……………………………………………………………………………
Bill Gates Jul 30 2000 4:09PM
President Clinton Jul 30 2000 4:13PM
William Shakespeare Jul 1 2000 4:09PM
(3 row(s) affected)

注意:
使用函数DATEADD()把一个日期加上一个月,它并不加上30天。这个函数只简单地把月份值加1。 

函数 参数/功能 GetDate( ) 返回系统目前的日期与时间 DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1 DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期 DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值 DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称


参数 interval的设定值如下:

缩 写(Sql Server) Access 和 ASP 说明 Year Yy yyyy 年 1753 ~ 9999 Quarter Qq q  季 1 ~ 4 Month Mm m  月1 ~ 12 Day of year Dy y 一年的日数,一年中的第几日 1-366 Day Dd d  日,1-31 Weekday Dw w 一周的日数,一周中的第几日 1-7 Week Wk ww 周,一年中的第几周 0 ~ 51 Hour Hh h  时0 ~ 23 Minute Mi n  分钟0 ~ 59 Second Ss s 秒 0 ~ 59 Millisecond Ms - 毫秒 0 ~ 999
Posted in 数据库 at April 13, 2009. by 傻猫 .    Views: 7514    1 Comment

MSSQL查出一个数据库所有表名及表中含有数据条数?

MSSQL查出一个数据库所有表名及表中含有数据条数?

EXEC sp_MSforeachtable @command1="print '?'", @command2= "SELECT count(*) FROM ? "

Posted in 数据库 at January 21, 2009. by 傻猫 .    Views: 7279    3 Comments

MSSQL获取表中所有字段名称

select name from syscolumns where id=object_id('表名') order by colid

该SQL查询条件可以获得指定表的所有字段名称

以colid排序后,显示的字段名称顺序跟表设计的顺序是一致的,不排序的话就是字段的首字母排序。

Posted in 数据库 at October 7, 2008. by 傻猫 .    Views: 4341    No Comments

sqlserver日志文件清理方法

       日志文件满而造成SQL数据库无法写入文件时,可用两种方法:
  
  一种方法:清空日志。

  1.打开查询分析器,输入命令
  DUMP TRANSACTION 数据库名 WITH NO_LOG

  2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

  另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。

  1: 删除LOG
  分离数据库 企业管理器->服务器->数据库->右键->分离数据库

  2:删除LOG文件
  附加数据库 企业管理器->服务器->数据库->右键->附加数据库

  此法生成新的LOG,大小只有500多K。

  注意:建议使用第一种方法。

  如果以后,不想要它变大。

  SQL2000下使用:
  在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。

  或用SQL语句:
  alter database 数据库名 set recovery simple

  另外,数据库属性有两个选项,与事务日志的增长有关:

  Truncate log on checkpoint
  (此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)

  当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True

  Auto shrink
  定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。

  注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

Posted in 数据库 at September 9, 2008. by 傻猫 .    Views: 4797    1 Comment

MSSQL分页存储过程

一段MSSQL分页的存储过程,先收藏了,备用。

CREATE PROCEDURE GTNews_Search
(
             @SearchSQL nvarchar(4000),
 @RecordCountSQL nvarchar(4000),
 @PageIndex int=0,
 @PageSize int=25
)
AS
BEGIN


DECLARE @StartTime datetime
 DECLARE @RowsToReturn int
 DECLARE @PageLowerBound int
 DECLARE @PageUpperBound int
 DECLARE @Count int

-- Used to calculate cost of query
 SET @StartTime = GetDate()

-- Set the rowcount
 SET @RowsToReturn = @PageSize * (@PageIndex + 1)
 SET ROWCOUNT @RowsToReturn

-- Calculate the page bounds
 SET @PageLowerBound = @PageSize * @PageIndex
 SET @PageUpperBound = @PageLowerBound + @PageSize + 1

-- Create a temp table to store the results in
 CREATE TABLE #SearchResults
 (
  IndexID int IDENTITY (1, 1) NOT NULL,
  NewsID int
 )

-- Fill the temp table
 INSERT INTO #SearchResults (NewsID)
 exec (@SearchSQL)

-- SELECT actual search results from this table
 SELECT
  D.*,catname=(SELECT title FROM GT_news_cat WHERE id=D.catid)
 FROM
  GT_news_data D,
  #SearchResults R
 WHERE
  R.NewsID = D.ID AND
  R.IndexID > @PageLowerBound AND
  R.IndexID < @PageUpperBound

 -- Do we need to return a record estimate?
 exec (@RecordCountSQL) 


            SELECT Duration = GetDate() - @StartTime
END
GO

Posted in 数据库 at August 14, 2008. by 傻猫 .    Views: 3730    No Comments

SQL将日期按天分类统计

今天在做SQL统计的时候,有一个任务需要将日期按天分类统计,也就是把每天的订单数,以及其它信息的汇总,用下面这个函数就可以搞定,这个是统计已经有的天数。如果某天没有数据的话,就没有。

另外我在网上看到一种方法,如果某天没数据也要显示为0的话,就这样操作:先建一个日期表,再进行链表操作,关联查询就可以了。

select   convert(varchar(10),mytime,120)  时间 , count(*)   订单数 , 
sum (trueprice),   sum(price)  from   wenchuan_512     
Group   by   convert(varchar(10),mytime,120)
order   by   convert(varchar(10),mytime,120)

Posted in 数据库 at June 12, 2008. by 傻猫 .    Views: 7907    1 Comment

ASP数据库操作常用函数集

 ASP数据库操作常用函数集,经典的东西收藏备用。

代码来源于Mir ZhouYang。

dbinit()                        连接数据库  

opendb(asqlstr,rs_temp)         打开记录集的函数  

selectdb(awherestr,dbname,rs_temp) 打开表的函数   

deletedb(awherestr,dbname)      数据库删除记录的函数  

updatedb(aarr,awherestr,dbname) 数据库修改记录的函数  

insertdbex(aarr,dbname,rs_temp) 数据库增加记录的函数  

insertdbrs(aarr,dbname)         数据库增加记录(insert into)返回当前记录id  

insertdb(aarr,dbname)           数据库插入记录的函数  

dbclose()                       页面结束关闭数据库 

 

ASP/Visual Basic代码
  1. <%   
  2. '=============================================  
  3. 'dbinit()                        连接数据库  
  4. 'opendb(asqlstr,rs_temp)         打开记录集的函数  
  5. 'selectdb(awherestr,dbname,rs_temp) 打开表的函数   
  6. 'deletedb(awherestr,dbname)      数据库删除记录的函数  
  7. 'updatedb(aarr,awherestr,dbname) 数据库修改记录的函数  
  8. 'insertdbex(aarr,dbname,rs_temp) 数据库增加记录的函数  
  9. 'insertdbrs(aarr,dbname)         数据库增加记录(insert into)返回当前记录id  
  10. 'insertdb(aarr,dbname)           数据库插入记录的函数  
  11. 'dbclose()                       页面结束关闭数据库  
  12. '========================================  
  13. dim Conn,rs_Event   
  14.   Set rs_Event = Server.CreateObject("ADODB.RecordSet")   
  15.   
  16. function dbinit()   
  17.   if conn <> null then    
  18.     exit function    
  19.   end if    
  20. Set conn = Server.CreateObject("ADODB.Connection")   
  21. conn.ConnectionTimeout = 10   
  22. conn.CommandTimeout = 30   
  23. conn.CursorLocation = 3   
  24. conn.ConnectionString = "driver={SQL Server};server="+database_servername+";uid="+database_loginname+";pwd="+database_password+";database="+database_name   
  25.   
  26. on Error Resume Next  
  27. conn.Open    
  28.            if err<>0 then   
  29.                       response.write "请验查数据库服务器的连接信息是否正确。"  
  30.                       response.end   
  31.            end if   
  32. end function    
  33.   
  34. function opendb(asqlstr,rs_temp)   
  35. '打开记录集的函数  
  36. 'asqlstr 是输入sql语句  
  37. 'rs_temp 是输入记录集变量  
  38. 'on Error Resume Next  
  39.   Set rs_temp = Server.CreateObject("ADODB.RecordSet")   
  40.   if rs_temp.state = adStateOpen then    
  41.     rs_temp.close   
  42.   end if    
  43. '  Response.Write asqlstr  
  44.   set rs_temp=server.createobject("adodb.recordset")   
  45.   rs_temp.CursorLocation=adUseClient   
  46.   rs_temp.open asqlstr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  47. end function    
  48.   
  49. function selectdb(awherestr,dbname,rs_temp)   
  50. '打开表的函数  
  51.   
  52. 'awherestr 是sql中条件很语句  
  53. 'dbname  是数据表名  
  54. 'rs_temp 是记录集变量  
  55. 'on Error Resume Next  
  56.   selectdb = 1   
  57.   if rs_temp.state = adStateOpen then    
  58.     rs_temp.close   
  59.   end if    
  60.   rs_temp.CursorLocation=adUseClient   
  61.  'response.write "Select * from "&dbname&awherestr  
  62.   
  63.   rs_temp.open "Select * from "&dbname&awherestr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  64.   if Conn.Errors.Count > 0 then    
  65.       selectdb =  0   
  66.    end if    
  67. end function    
  68.   
  69.   
  70. function selectdbtop(awherestr,dbname,rs_temp)   
  71. '打开表的函数  
  72. 'awherestr 是sql中条件很语句  
  73. 'dbname  是数据表名  
  74. 'rs_temp 是记录集变量  
  75. 'on Error Resume Next  
  76.   selectdb = 1   
  77.   if rs_temp.state = adStateOpen then    
  78.     rs_temp.close   
  79.   end if    
  80.   rs_temp.CursorLocation=adUseClient   
  81.  'response.write "Select * from "&dbname&awherestr  
  82.   rs_temp.open "Select * from "&dbname&awherestr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  83.   if Conn.Errors.Count > 0 then    
  84.       selectdb =  0   
  85.    end if    
  86. end function    
  87.   
  88.   
  89. function deletedb(awherestr,dbname)   
  90. '数据库删除记录的函数  
  91. 'awherestr 是sql中条件很语句  
  92. 'dbnaem 是数据库名称  
  93. 'on Error Resume Next  
  94.    deletedb = 1   
  95.    Conn.Execute "delete from "&dbname&awherestr   
  96.    if Conn.Errors.Count > 0 then    
  97.      deletedb =  0   
  98.    end if    
  99. end function    
  100. function updatedb(aarr,awherestr,dbname)   
  101. '数据库修改记录的函数  
  102. 'aarr 修改数组  
  103. 'awherestr 是sql中条件很语句  
  104. 'dbnaem 是数据库名称  
  105. 'on Error Resume Next  
  106. dim i    
  107.    updatedb = 1   
  108.    t_values = ""  
  109.    for i=0 to ubound(aarr) - 1   
  110.      t_values=t_values&aarr(i,0)"='"&replace(aarr(i,1),"'","''")"',"  
  111.    next   
  112.    t_values=left(t_values,len(t_values) -1)   
  113.    Conn.Execute "update "&dbname" set "&t_values&awherestr   
  114.   
  115.    if Conn.Errors.Count > 0 then    
  116.       updatedb =  0   
  117.    end if    
  118.       
  119. end function    
  120. function insertdbex(aarr,dbname,rs_temp)   
  121. 'on Error Resume Next  
  122.   dim i   
  123.    insertdbex = 1   
  124.   if rs_temp.state = adStateOpen then    
  125.     rs_temp.close    
  126.   end if     
  127.    rs_temp.ActiveConnection = conn   
  128.    rs_temp.CursorType = adOpenKeyset   
  129.    rs_temp.LockType = adLockOptimistic   
  130.    rs_temp.source = dbname   
  131.    rs_temp.Open   
  132.    rs_temp.AddNew   
  133.    for i=0 to ubound(aarr) - 1   
  134.      
  135.   
  136.     rs_temp(aarr(i,0)) = aarr(i,1)   
  137.    next     
  138.   
  139.   
  140.    rs_temp.update   
  141.    if  Err.number <>  0 then    
  142.       response.write err.description   
  143.       response.end   
  144.       insertdbex =  0   
  145.    end if    
  146. end function    
  147. function insertdb(aarr,dbname)    
  148. '数据库插入记录的函数  
  149. 'dbnaem 是数据库名称  
  150. 'on Error Resume Next  
  151.   dim i    
  152.    err.clear   
  153.    insertdb = 1   
  154.    t_values = ""  
  155.    t_fields = ""  
  156.    for i=0 to ubound(aarr) - 1   
  157.      t_fields = t_fields&aarr(i,0)","  
  158.      t_values=t_values"'"&replace(aarr(i,1),"'","''")"',"        
  159.    next   
  160.    t_values=left(t_values,len(t_values) -1)   
  161.    t_fields=left(t_fields,len(t_fields) -1)   
  162.   
  163.    Conn.Execute "insert into "&dbname" ("&t_fields") values ("&t_values")"  
  164.       
  165.    if (Conn.Errors.Count > 0) or (err.number <> 0)  then    
  166.       insertdb =  0   
  167.    end if    
  168.       
  169. end function    
  170.   
  171. function insertdbrs(aarr,dbname)    
  172. '数据库插入记录的函数  
  173. 'aarr 增加数组  
  174. 'dbnaem 是数据库名称  
  175. 'on Error Resume Next  
  176.   dim i    
  177.    err.clear   
  178.    insertdbrs = 1   
  179.    t_values = ""  
  180.    t_fields = ""  
  181.    for i=0 to ubound(aarr) - 1   
  182.      t_fields = t_fields&aarr(i,0)","  
  183.      t_values=t_values"'"&replace(aarr(i,1),"'","''")"',"        
  184.    next   
  185.    t_values=left(t_values,len(t_values) -1)   
  186.    t_fields=left(t_fields,len(t_fields) -1)   
  187.   
  188.    set returnrs=Conn.Execute("SET NOCOUNT ON;insert into "&dbname" ("&t_fields") values ("&t_values");SELECT @@IDENTITY")   
  189.   
  190.    if (Conn.Errors.Count > 0) or (err.number <> 0)  then    
  191.       insertdbrs =  0   
  192.    end if    
  193.   
  194.    insertdbrs=returnrs(0)   
  195.    returnrs.close   
  196.   
  197. end function    
  198. '页面结束关闭数据库  
  199. function dbclose()   
  200.   Conn.Close   
  201. end function    
  202.   
  203.   
  204. %>  
Posted in 数据库 at September 21, 2007. by 傻猫 .    Views: 3723    No Comments