首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

时间处理的有关问题

2012-08-21 
时间处理的问题表其中有两个字段,一个用于表示年度nd,领另一个表示月份yfselect (cast(nd + -+yf + -01

时间处理的问题
表其中有两个字段,一个用于表示年度nd,领另一个表示月份yf
select (cast(nd + '-'+yf + '-01' as datetime)) as rq from 表
结果rq
1905-07-05 00:00:00.000

年度字段值为2001~2021
月份字段值为1~12

想得到的结果是 2001-1-1~2020-12-01 类型为时间 可以实现吗?!

[解决办法]

SQL code
declare @nd varchar(10) set @nd=2012declare @yf varchar(10) set @yf=7select (cast(@nd + '-'+@yf + '-01' as datetime)) as rq /*rq-----------------------2012-07-01 00:00:00.000*/declare @nd1 varchar(10) set @nd1='2001~2021'declare @yf1 varchar(10) set @yf1='1~12'select convert(varchar(10),cast(left(@nd1,charindex('~',@nd1)-1)+'-'+left(@yf1,charindex('~',@yf1)-1)+'-01' as datetime),120)+'~'+convert(varchar(10),cast(right(@nd1,len(@nd1)-charindex('~',@nd1))+'-'+right(@yf1,len(@yf1)-charindex('~',@yf1))+'-01' as datetime),120) as rq/*rq---------------------2001-01-01~2021-12-01*/
[解决办法]
SQL code
Select CONVERT(varchar(10), (cast(nd + '-'+yf + '-01' as datetime)), 120)as rq from tb
[解决办法]
SQL code
select cast(DATENAME (YEAR, getdate())+'-'+DATENAME (MONTH, getdate())+'-01' as datetime)
[解决办法]
SQL code
--理解有误,不好意思--trydeclare @nd varchar(20),@yf varchar(6)set @nd='2001~2021'set @yf='1~12'select substring(@nd,1,charindex('~',@nd)-1)+'-1-1~'+convert(varchar,convert(int,substring(@nd,charindex('~',@nd)+1,4))-1)+'-12-01' 

热点排行