declare @dt datetime set @dt='2005-1-17 10:44:40'--转换 select convert(char(8),@dt,112),replace(convert(char(8),@dt,108),':','') --结果:20050117 104440
--写成自定义函数就是 create function f_convert(@dt datetime,@bz bit)returns varchar(15) as begin if @bz=0 --@bz=0则转换为日期 return(convert(char(8),@dt,112)) else if @bz=1 --@bz=0则转换为时间 return(replace(convert(varchar(8),@dt,108),':','')) --@bz=null则转换为日期+时间 return(convert(char(8),@dt,112) +' ' +replace(convert(varchar(8),@dt,108),':','')) end go--调用 select date=dbo.f_convert('2005-1-17 10:44:40',0) ,time=dbo.f_convert('2005-1-17 10:44:40',1) ,date_time=dbo.f_convert('2005-1-17 10:44:40',null) go/*--结果 date time date_time --------------- --------------- --------------- 20050117 104440 20050117 104440(所影响的行数为 1 行) --*/
CREATE FUNCTION dbo.RetStringTime (@Time DateTime) RETURNS varchar(20) AS BEGIN declare @OutTime varchar(5) set @OutTime=replace(convert(char(8),@Time ,108),':','') RETURN(@OutTime) END为什么我写成这样返回的时间 是这样的 10472
CREATE FUNCTION dbo.RetStringTime (@Time DateTime) RETURNS varchar(20) AS BEGIN declare @OutTime varchar(6) --varchar(5) --这里定义得太小,截断了 set @OutTime=replace(convert(char(8),@Time ,108),':','') RETURN(@OutTime) END
set @dt='2005-1-17 10:44:40'--转换
select convert(char(8),@dt,112),replace(convert(char(8),@dt,108),':','')
--结果:20050117 104440
create function f_convert(@dt datetime,@bz bit)returns varchar(15)
as
begin
if @bz=0 --@bz=0则转换为日期
return(convert(char(8),@dt,112))
else if @bz=1 --@bz=0则转换为时间
return(replace(convert(varchar(8),@dt,108),':',''))
--@bz=null则转换为日期+时间
return(convert(char(8),@dt,112)
+' '
+replace(convert(varchar(8),@dt,108),':',''))
end
go--调用
select date=dbo.f_convert('2005-1-17 10:44:40',0)
,time=dbo.f_convert('2005-1-17 10:44:40',1)
,date_time=dbo.f_convert('2005-1-17 10:44:40',null)
go/*--结果
date time date_time
--------------- --------------- ---------------
20050117 104440 20050117 104440(所影响的行数为 1 行)
--*/
RETURNS varchar(20) AS
BEGIN
declare @OutTime varchar(5)
set @OutTime=replace(convert(char(8),@Time ,108),':','') RETURN(@OutTime)
END为什么我写成这样返回的时间 是这样的 10472
RETURNS varchar(20) AS
BEGIN
declare @OutTime varchar(6) --varchar(5) --这里定义得太小,截断了
set @OutTime=replace(convert(char(8),@Time ,108),':','') RETURN(@OutTime)
END