发布网友 发布时间:2022-04-07 23:13
共3个回答
懂视网 时间:2022-04-08 03:34
--显示最后5条记录,但是显示的顺序必须为5,6,7,8,9,10,而不是10,9,8,7,6,5 如下解决方法: select top 5 from test where id in(select top 5 from test order by id desc) order by id asc
--通过这个问题也能总结出4-10条,5-100条这种限定一定范围内的sql语句的写法: select top <末端ID-顶端ID+1> * from <表名> where ID not in(select top <顶端ID-1>) ID from <表名>)
--例如:4-10条就应该写成 select top 10-4+1 * from test where id not in(select top 4-1 id from test)
上一篇: select top 1 * from [news_table] where [新闻标识列]<当前id号 where ...... 下一篇: select top 1 * from [news_table] where [新闻标识列]>当前id号 where ...... order by [新闻标识列] desc --两条记录完全相同,如何删除其中一条 set rowcount=1 delete from thetablename where id=@duplicate_id--@duplicate_id为重复值的id
--模糊查询 select * from product where detail like ‘%123.jpg%‘ --替换字段里面部分内容 update product set detail=replace(cast(detail as varchar(8000)),‘abc.jpg‘,‘efg.jpg‘)
--日期转换参数,值得收藏 select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),‘-‘,‘‘),‘ ‘,‘‘),‘:‘,‘‘) 20040912110608
select CONVERT(varchar(12) , getdate(), 111 ) 2004/09/12
select CONVERT(varchar(12) , getdate(), 112 ) 20040912
select CONVERT(varchar(12) , getdate(), 102 ) 2004.09.12
--一个月第一天 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) -- 2009-06-01 00:00:00.000 --当天 select * from product where DateDiff(day,modiDate,GetDate())>1
--如何查询本日、本月、本年的记录SQL 本年: select * from loanInfo where year(date)=year(getdate()) 本月: select * from loanInfo where year(date)=year(getDate()) And month(date)=month(getdate()) 本日: select * from loanInfo where year(date)=year(getDate()) And month(date)=month(getdate()) and Day(date)=Day(getDate())
本周的星期一 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) 一年的第一天 SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 季度的第一天 SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) 当天的半夜 SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 上个月的最后一天 这是一个计算上个月最后一天的例子。它通过从一个月的最后一天这个例子上减去毫秒来获得。有一点要记住,在Sql Server中时间是精确到毫秒。这就是为什么我需要减去毫秒来获得我要的日期和时间。 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) 计算出来的日期的时间部分包含了一个Sql Server可以记录的一天的最后时刻(“:59:59:997”)的时间。 去年的最后一天 连接上面的例子,为了要得到去年的最后一天,你需要在今年的第一天上减去毫秒。 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) 本月的最后一天 现在,为了获得本月的最后一天,我需要稍微修改一下获得上个月的最后一天的语句。修改需要给用DATEDIFF比较当前日期和“-01-01”返回的时间间隔上加。通过加个月,我计算出下个月的第一天,然后减去毫秒,这样就计算出了这个月的最后一天。这是计算本月最后一天的SQL脚本。 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) 本年的最后一天 你现在应该掌握这个的做法,这是计算本年最后一天脚本 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。 本月的第一个星期一 好了,现在是最后一个例子。这里我要计算这个月的第一个星期一。这是计算的脚本。 select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), 0) 在这个例子里,我使用了“本周的星期一”的脚本,并作了一点点修改。修改的部分是把原来脚本中“getdate()”部分替换成计算本月的第天,在计算中用本月的第天来替换当前日期使得计算可以获得这个月的第一个星期一。
--删除一个月前,三个月前, 6个月前,一年前的数据 DELETE FROM 表名WHERE datediff(MM, AddTime,GETDATE()) > 1 DELETE FROM 表名WHERE datediff(MM, AddTime,GETDATE()) > 3 DELETE FROM 表名WHERE datediff(MM, AddTime,GETDATE()) > 6 DELETE FROM 表名WHERE datediff(YY, AddTime,GETDATE()) > 1
--------------------------------------------------------------- 附录,其他日期处理方法 1)去掉时分秒 declare @ datetime set @ = getdate() --‘2003-7-1 10:00:00‘ SELECT @,DATEADD(day, DATEDIFF(day,0,@), 0) 2)显示星期几 select datename(weekday,getdate()) 3)如何取得某个月的天数 declare @m int set @m=2 --月份 select datediff(day,‘2003-‘+cast(@m as varchar)+‘-15‘ ,‘2003-‘+cast(@m+1 as varchar)+‘-15‘)
另外,取得本月天数 select datediff(day,cast(month(GetDate()) as varchar)+‘-‘+cast(month(GetDate()) as varchar)+‘-15‘ ,cast(month(GetDate()) as varchar)+‘-‘+cast(month(GetDate())+1 as varchar)+‘-15‘)
任意月份的最大天数 select day(dateadd(dd,-1,dateadd(mm,1,Dateadd(mm,datediff(mm,0,getdate()),0))))
或者使用计算本月的最后一天的脚本,然后用DAY函数区最后一天 SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))) 4)判断是否闰年:
SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then ‘平年‘ else ‘闰年‘ end
或者 select case datediff(day,datename(year,getdate())+‘-02-01‘,dateadd(mm,1,datename(year,getdate())+‘-02-01‘)) when 28 then ‘平年‘ else ‘闰年‘ end 5)一个季度多少天 declare @m tinyint,@time smalldatetime select @m=month(getdate()) select @m=case when @m between 1 and 3 then 1 when @m between 4 and 6 then 4 when @m between 7 and 9 then 7 else 10 end select @time=datename(year,getdate())+‘-‘+convert(varchar(10),@m)+‘-01‘ select datediff(day,@time,dateadd(mm,3,@time))
1、确定某年某月有多少天
实现原理:先利用DATEDIFF取得当前月的第一天,再将月份加一取得下月第一天,然后减去分钟,再取日期的天数部分,即为当月最大日期,也即当月天数
CREATE FUNCTION DaysInMonth ( @date datetime ) Returns int AS BEGIN RETURN Day(dateadd(mi,-3,DATEADD(m, DATEDIFF(m,0,@date)+1,0))) END
调用示例:
select dbo.DaysInMonth (‘2006-02-03‘)
(2)计算哪一天是本周的星期一
SELECT DATEADD(week, DATEDIFF(week,‘1900-01-01‘,getdate()), ‘1900-01-01‘) --返回-11-06 00:00:00.000 或 SELECT DATEADD(week, DATEDIFF(week,0,getdate()),0)
(3)当前季度的第一天
SELECT DATEADD(quarter, DATEDIFF(quarter,0,getdate()), 0)—返回-10-01 00:00:00.000
(4)一个季度多少天
declare @m tinyint,@time smalldatetime
select @m=month(getdate()) select @m=case when @m between 1 and 3 then 1 when @m between 4 and 6 then 4 when @m between 7 and 9 then 7 else 10 end
select @time=datename(year,getdate())+‘-‘+convert(varchar(10),@m)+‘-01‘ select datediff(day,@time,dateadd(mm,3,@time)) —返回
1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as
2.分页SQL语句 select * from(select (row_number() OVER (ORDER BY tab.ID Desc)) as rownum,tab.* from 表名As tab) As t where rownum between 起始位置And 结束位置
8.如何修改数据库的名称:
sp_renamedb ‘old_name‘, ‘new_name‘
3.获取当前数据库中的所有用户表 select * from sysobjects where xtype=‘U‘ and category=0
4.获取某一个表的所有字段 select name from syscolumns where id=object_id(‘表名‘)
5.查看与某一个表相关的视图、存储过程、函数 select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like ‘%表名%‘
6.查看当前数据库中所有存储过程 select name as 存储过程名称from sysobjects where xtype=‘P‘
7.查询用户创建的所有数据库 select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name=‘sa‘) 或者 select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
8.查询某一个表的字段和数据类型 select column_name,data_type from information_schema.columns where table_name = ‘表名‘
9.使用事务 在使用一些对数据库表的临时的SQL语句操作时,可以采用SQL SERVER事务处理,防止对数据操作后发现误操作问题
开始事务 Begin tran Insert Into TableName Values(…) SQL语句操作不正常,则回滚事务。
回滚事务 Rollback tran SQL语句操作正常,则提交事务,数据提交至数据库。
提交事务 Commit tran
计算执行SQL语句查询时间
declare @d datetime set @d=getdate() select * from SYS_ColumnProperties select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
【关闭SQL Server 数据库所有使用连接】
var cpro_id = "u6292429";
热心网友 时间:2022-04-08 00:42
几个简单的基本的sql语句热心网友 时间:2022-04-08 02:00
select