急 !!sql server 2008 R2怎么才能设定只获取年月部分并且按照yyyymm的格式显示.

时间:2023-01-29 17:45:24

select billno,billdate from spyPartsWareOutM

FSPO140121001         20140121
FSPO140121002  20140121
FSPO140121003         20140121
FSPO140121004         20140121
FSPO140122001    20140122
FSPO140122002  20140122
FSPO140122003  20140122

查出来的 billdate 是 intdate 类型,我想要查billdate 类型 是年月类型的 也就是 201401 ! 在线求解,。 

14 个解决方案

#1


[code=sql]select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM[code]

#2


select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM

#3


select billno,convert(varchar(6),billdate,112) from spyPartsWareOutM

#4


select convert(varchar(6),BillDate,112) from spyPartsWareOutM


*
*
*
*
*
*
*
这个查询出来的结果都变成了 *

#5


select convert(varchar(6),billdate,112) from spyPartsWareOutM

#6


关键是你后面的日怎么写?
convert(datetime,cast(billdate as varchar(10))+'01',112)

#7


我也装的R2,怎么没有intdate这个类型的数据啊?

#8


引用 3 楼 OrchidCat 的回复:
select billno,convert(varchar(6),billdate,112) from spyPartsWareOutM


这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

#9


引用 2 楼 yoan2014 的回复:
select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM

这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

#10


引用 8 楼 u011780236 的回复:
Quote: 引用 3 楼 OrchidCat 的回复:

select billno,convert(varchar(6),billdate,112) from spyPartsWareOutM


这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

不好意思 回复错楼了。你这样查询出来那列的结果是 * 星号。

#11


引用 9 楼 u011780236 的回复:
Quote: 引用 2 楼 yoan2014 的回复:

select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM

这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

select billno,substring(convert(char(08),billdate),1,4) + '-' +substring(convert(char(08),billdate),5,2) from spyPartsWareOutM

#12


select billno,substring(convert(char(08),billdate),1,120) from spyPartsWareOutM

引用 10 楼 u011780236 的回复:
Quote: 引用 8 楼 u011780236 的回复:

Quote: 引用 3 楼 OrchidCat 的回复:

select billno,convert(varchar(6),billdate,112) from spyPartsWareOutM


这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

不好意思 回复错楼了。你这样查询出来那列的结果是 * 星号。




if object_id('[spyPartsWareOutM]') is not null drop table [spyPartsWareOutM]
create table [spyPartsWareOutM] (billno varchar(13),billdate int)
insert into [spyPartsWareOutM]
select 'FSPO140121001','20140121' union all
select 'FSPO140121002','20140121' union all
select 'FSPO140121003','20140121' union all
select 'FSPO140121004','20140121' union all
select 'FSPO140122001','20140122' union all
select 'FSPO140122002','20140122' union all
select 'FSPO140122003','20140122'

select * from [spyPartsWareOutM]


select billno,convert(varchar(7),CONVERT(DATETIME,CONVERT(VARCHAR,billdate)),120) AS billdate from spyPartsWareOutM

/*
billno billdate
FSPO140121001 2014-01
FSPO140121002 2014-01
FSPO140121003 2014-01
FSPO140121004 2014-01
FSPO140122001 2014-01
FSPO140122002 2014-01
FSPO140122003 2014-01*/

#13


用Datepart函数先取出Year并转换为字符串,再取出month并转换为字符串,然后合并字符串。
http://msdn.microsoft.com/zh-cn/library/ms174420.aspx

#14


引用 11 楼 yoan2014 的回复:
Quote: 引用 9 楼 u011780236 的回复:

Quote: 引用 2 楼 yoan2014 的回复:

select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM

这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

select billno,substring(convert(char(08),billdate),1,4) + '-' +substring(convert(char(08),billdate),5,2) from spyPartsWareOutM

谢谢 大虾! 就是这样的效果。

#1


[code=sql]select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM[code]

#2


select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM

#3


select billno,convert(varchar(6),billdate,112) from spyPartsWareOutM

#4


select convert(varchar(6),BillDate,112) from spyPartsWareOutM


*
*
*
*
*
*
*
这个查询出来的结果都变成了 *

#5


select convert(varchar(6),billdate,112) from spyPartsWareOutM

#6


关键是你后面的日怎么写?
convert(datetime,cast(billdate as varchar(10))+'01',112)

#7


我也装的R2,怎么没有intdate这个类型的数据啊?

#8


引用 3 楼 OrchidCat 的回复:
select billno,convert(varchar(6),billdate,112) from spyPartsWareOutM


这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

#9


引用 2 楼 yoan2014 的回复:
select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM

这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

#10


引用 8 楼 u011780236 的回复:
Quote: 引用 3 楼 OrchidCat 的回复:

select billno,convert(varchar(6),billdate,112) from spyPartsWareOutM


这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

不好意思 回复错楼了。你这样查询出来那列的结果是 * 星号。

#11


引用 9 楼 u011780236 的回复:
Quote: 引用 2 楼 yoan2014 的回复:

select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM

这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

select billno,substring(convert(char(08),billdate),1,4) + '-' +substring(convert(char(08),billdate),5,2) from spyPartsWareOutM

#12


select billno,substring(convert(char(08),billdate),1,120) from spyPartsWareOutM

引用 10 楼 u011780236 的回复:
Quote: 引用 8 楼 u011780236 的回复:

Quote: 引用 3 楼 OrchidCat 的回复:

select billno,convert(varchar(6),billdate,112) from spyPartsWareOutM


这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

不好意思 回复错楼了。你这样查询出来那列的结果是 * 星号。




if object_id('[spyPartsWareOutM]') is not null drop table [spyPartsWareOutM]
create table [spyPartsWareOutM] (billno varchar(13),billdate int)
insert into [spyPartsWareOutM]
select 'FSPO140121001','20140121' union all
select 'FSPO140121002','20140121' union all
select 'FSPO140121003','20140121' union all
select 'FSPO140121004','20140121' union all
select 'FSPO140122001','20140122' union all
select 'FSPO140122002','20140122' union all
select 'FSPO140122003','20140122'

select * from [spyPartsWareOutM]


select billno,convert(varchar(7),CONVERT(DATETIME,CONVERT(VARCHAR,billdate)),120) AS billdate from spyPartsWareOutM

/*
billno billdate
FSPO140121001 2014-01
FSPO140121002 2014-01
FSPO140121003 2014-01
FSPO140121004 2014-01
FSPO140122001 2014-01
FSPO140122002 2014-01
FSPO140122003 2014-01*/

#13


用Datepart函数先取出Year并转换为字符串,再取出month并转换为字符串,然后合并字符串。
http://msdn.microsoft.com/zh-cn/library/ms174420.aspx

#14


引用 11 楼 yoan2014 的回复:
Quote: 引用 9 楼 u011780236 的回复:

Quote: 引用 2 楼 yoan2014 的回复:

select billno,substring(convert(char(08),billdate),1,6) from spyPartsWareOutM

这样查询出来后,如果还要在月份前加个横杠可以吗 2014-01

select billno,substring(convert(char(08),billdate),1,4) + '-' +substring(convert(char(08),billdate),5,2) from spyPartsWareOutM

谢谢 大虾! 就是这样的效果。