select语句中的sql转换

时间:2013-09-26 21:23:18

标签: sql-server

这是一个表格示例。使用sql-server 我试图为下面的每个员工提取最大值(登录日期),但是"登录日期"在数据库中是数据类型int。 我可以很容易地选择它,即

select employee,title,max(login_date) from employee group by employee,title

我可以使用substring将login_date(" YYYYMM")转换为日期变量,

set @var_year=select (substring((select login_date),1,4))

使用变量存储年份和变量来存储月份,但是如何将其传递给主要的select语句?

Employee  Title         Login_Date              
-----------------------------------------
Mike      VP            201301
Amy       CEO           201201                    
Joe       Office Mgr    201105
Andy      Admin Asst    201308
Joe       Office Mgr    201205
Andy      Admin Asst    201309
Joe       Office Mgr    201205
Andy      Admin Asst    201309

1 个答案:

答案 0 :(得分:1)

你可以通过几种方式做到这一点。 一个是

Select m.employee,m.title,
convert(int,substring(thisisNOTadate,1,4)) as [Year],
convert(int,substring(thisisNOTadate,5,2)) as [Month]
From 
(select employee,title,max(login_date) as ThisisNOTadate 
 from employee group by employee,title
) m

在拍打过多次以YYYYMM login_date格式调用字符串的人之后,我会重新编写表格,所以login_date实际上是Convert(DateTime,Convert(VarChar(6), Login_date) + '01')之类的日期,然后是需要部分内容的任何部分date可以使用该标准日期函数。

因此,根据您对ReBand先生的评论

select employee,title,
       max(convert(datetime,Convert(varchar(6),login_date) + '01')) as arealdate
From employee group by employee,title

将是另一个。