Sql server select语句中的sql转换
下面是一个表格示例。使用sql server 我试图为下面的每个员工提取最大值(登录日期),但数据库中的“登录日期”是数据类型int。 我可以很容易地选择它Sql server select语句中的sql转换,sql-server,Sql Server,下面是一个表格示例。使用sql server 我试图为下面的每个员工提取最大值(登录日期),但数据库中的“登录日期”是数据类型int。 我可以很容易地选择它 select employee,title,max(login_date) from employee group by employee,title 我可以使用子字符串将登录日期(“YYYYMM”)转换为日期变量 set @var_year=select (substring((select login_date),1,4)) 使用变
select employee,title,max(login_date) from employee group by employee,title
我可以使用子字符串将登录日期(“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
有几种方法可以做到这一点。 一个是
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
可能是另一种情况。有几种方法可以做到这一点。
一个是
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
可能是另一个。那么,查询它的更好方法是什么,因为我希望新的“日期”字段是正确的,而不仅仅是从第一个结果中抓取的。您可以显示预期的结果吗?那么,查询它的更好方法是什么,因为我希望新的“日期”字段是正确的,不仅仅是从第一个结果中抓取你能展示预期的结果吗?我完全同意托尼的观点。它在我们的程序中是一个日期字段,但在数据库中是一个int字段。谢谢托尼,我想我可以用这个。我本来打算给你一个+的,雷班德先生。我不喜欢没有添加样式,也不知道如果没有连字符分隔符,126也会很好。对于那些看不到已删除帖子的人,我完全同意。它在我们的程序中是一个日期字段,但在数据库中是一个int字段。谢谢托尼,我想我可以用这个。我本来打算给你一个+的,雷班德先生。我不喜欢没有添加样式,也不知道如果没有连字符分隔符,126也会很好。对于那些看不到已删除帖子的人,转换(datetime,convert(varchar(6),login_date)+“01'),126)