这是一个表格示例。使用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
答案 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
将是另一个。