这是一个表格示例。使用sql-server,我试图为下面的每个员工拉取max(登录日期),但是数据库中的“登录日期”是数据类型int。我可以很容易地选择它,即
select employee,title,max(login_date) from employee group by employee,title
我可以使用子字符串将login_date(“ YYYYMM”)转换为日期变量,
set @var_year=select (substring((select login_date),1,4))
使用变量存储年份和变量存储月份,但是如何将其传递给主选择语句?
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
有几种方法可以做到这一点。一个是
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')
,然后需要该日期部分的任何内容都可以使用该标准日期功能。
所以根据您之前对ReBand先生的评论
select employee,title,
max(convert(datetime,Convert(varchar(6),login_date) + '01')) as arealdate
From employee group by employee,title
会是另一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句