
select convert(varchar(10),getdate(),111)
结果应该是2012/10/25 后面不带 00:00:00的
你看到了00:00:00是因为你把这个值插入了一个datatime列里面,后面的是自动补上的。
DATEADD
在向指定日期加上一段时间的基础上,返回新的 datetime 值。
语法
DATEADD ( datepart , number, date )
DATEDIFF
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF ( datepart , startdate , enddate )
DATEPART
返回代表指定日期的指定日期部分的整数。
语法
DATEPART ( datepart , date )
DATENAME
返回代表指定日期的指定日期部分的字符串。
语法
DATENAME ( datepart , date )
比较 DATEADD 和 DATEDIFF
DATEADD 函数向指定日期添加一段时间间隔。例如,如果 titles 表中所有书籍的发行日期都推迟三天,则可使用以下语句获得新的发行日期:
USE pubs
SELECT DATEADD(day, 3, pubdate)
FROM titles
如果日期参数的数据类型是 smalldatetime,则结果的数据类型也是 smalldatetime。可以使用 DATEADD 对 smalldatetime 值添加秒或毫秒,但只有当 DATEADD 返回的结果日期至少改变了 1 分钟时,这样做才有意义。
DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期之间各日期部分相差的时间量。换句话说,它得出两个日期之间的间隔。结果是等于 date2 - date1 的带符号整数值,以各日期部分为单位。
下面的查询使用日期 1995 年 11 月 30 日,并得出 pubdate 和该日期之间相差的天数。
USE pubs
SELECT DATEDIFF(day, pubdate, 'Nov 30 1995')
FROM titles
对于 titles 中 pubdate 为 1995 年 10 月 21 日的行,上述查询生成的结果为 40。(10 月 21 日和 11 月 30 日之间相差 40 天。)要计算以月为单位的间隔,请使用以下查询:
USE pubs
SELECT interval = DATEDIFF(month, pubdate, 'Nov 30 1995')
FROM titles
该查询对 pubdate 值在 10 月的行生成的值为 1,对 pubdate 值在 6 月的行生成的值为 5。
若 DATEDIFF 函数中的第一个日期晚于指定的第二个日期,则产生的结果为负数。由于 titles 中有两行使用 GETDATE 函数指派 pubdate 的值,所以这些值被设置为 pubs 数据库的创建日期,这样在前面的两个查询中这两行返回负数。
如果一个或两个日期参数是 smalldatetime 值,它们将在内部转换为 datetime 值进行计算。为了进行计算,smalldatetime 值中的秒和毫秒将自动设置为 0。
比较 DATEPART 和 DATENAME
DATEPART 和 DATENAME 函数将 datetime 值的指定部分(年、季度、天、小时等)生成为整数值或 ASCII 字符串。由于 smalldatetime 只能精确到分钟,所以在这两个函数中使用 smalldatetime 值时,返回的秒和毫秒部分总是为零。
下面的示例假定日期为 5 月 29 日:
SELECT DATEPART(month, GETDATE())
下面是结果集:
------------
5
(1 row(s) affected)
SELECT DATENAME(month, GETDATE())
下面是结果集:
------------
May
(1 row(s) affected)
具体可以参考SQL Server联机丛书(安装SQLServer时自动的帮助)
1、使用getdate获取当前日期。
2、用datename 分别获取月份和日。
3、系统标准日期格式没有月日,所以使用连接符'+',自定义格式。
if
exists
(select
from
dbosysobjects
where
id
=
object_id(N
'[dbo][p_getlinkinfo]
')
and
OBJECTPROPERTY(id,
N
'IsProcedure
')
=
1)
drop
procedure
[dbo][p_getlinkinfo]
GO
/--获取连接SQL服务器的信息
所有连接本机的: *** 作的数据库名,计算机名,用户名,网卡物理地址,IP地址,程序名
--邹建
200311(引用请保留此信息)--/
/--调用示例
--显示所有本机的连接信息
exec
p_getlinkinfo
--显示所有本机的连接信息,包含ip地址
exec
p_getlinkinfo
@includeip=1
--显示连接指定数据库的信息
exec
p_getlinkinfo
'客户资料
'
--/
create
proc
p_getlinkinfo
@dbname
sysname=null,
--要查询的数据库名,默认查询所有数据库的连接信息
@includeip
bit=0
--是否显示IP地址,因为查询IP地址比较费时,所以增加此控制
as
declare
@dbid
int
set
@dbid=db_id(@dbname)
create
table
#tb(id
int
identity(1,1),dbname
sysname,hostname
nchar(128),loginname
nchar(128),net_address
nchar(12),net_ip
nvarchar(15),prog_name
nchar(128))
insert
into
#tb(hostname,dbname,net_address,loginname,prog_name)
select
distinct
hostname,db_name(dbid),net_address,loginame,program_name
from
mastersysprocesses
where
hostname
<>
'
'
and
(@dbid
is
null
or
dbid=@dbid)
if
@includeip=0
goto
lb_show
--如果不显示IP地址,就直接显示
declare
@sql
varchar(500),@hostname
nchar(128),@id
int
create
table
#ip(hostname
nchar(128),a
varchar(200))
declare
tb
cursor
local
for
select
distinct
hostname
from
#tb
open
tb
fetch
next
from
tb
into
@hostname
while
@@fetch_status=0
begin
set
@sql=
'ping
'+@hostname+
'
-a
-n
1
-l
1
'
insert
#ip(a)
exec
masterxp_cmdshell
@sql
update
#ip
set
hostname=@hostname
where
hostname
is
null
fetch
next
from
tb
into
@hostname
end
update
#tb
set
net_ip=left(a,patindex(
'%:%
',a)-1)
from
#tb
a
inner
join
(
select
hostname,a=substring(a,patindex(
'Ping
statistics
for
%:%
',a)+20,20)
from
#ip
where
a
like
'Ping
statistics
for
%:%
')
b
on
ahostname=bhostname
lb_show:
select
id,数据库名=dbname,客户机名=hostname,用户名=loginname
,网卡物理地址=net_address,IP地址=net_ip,应用程序名称=prog_name
from
#tb
go
张朝辉已经给出明确答案了。我就详细说下吧:用到的函数:datediff(week,,这里取用户中奖日期,getdate())
第一个参数可以是小时hh,分mi,秒ss,周week,月mm,年yy
等,getdate()获取当前系统时间,之后去比较
第二个参数和第三个参数之间的差值是根据第一个参数来判断是多少的
具体的你懂编程的知道的。把张朝辉的代码中条件语句中的print换成你要执行的代码就行了
SQL里常用的时间函数:
>
以上就是关于SQL获取时间函数convert(varchar(10),getdate(),111)全部的内容,包括:SQL获取时间函数convert(varchar(10),getdate(),111)、SQL Server 中时间函数、SQL中获取当前日期的函数怎么写(只要**月**日)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)