2011-08-31 138 views
0

我想知道如何将年份和月份存入我的数据库。例如,假设这是2011年8月,我需要的是这样的输出:CAB 11 08 001(。CAB +年+月+ CURRENT NO追踪数)从SQL获取年份和月份

这是我的SQL:

ALTER PROCEDURE [dbo].[generateTrackNo] AS 
Declare @tempYear VARCHAR(5),@tempMonth VARCHAR(5) 
Set @tempYear = Year(GetDate()) 
Set @tempMonth = Month(GetDate()) 
SELECT 'CAB' + Right(Cast(Year(GetDate()) as varchar(10)),2)+ Right(Cast(Month(GetDate()) as varchar(10)),2) + Right('000000'+ Cast(CurrentNo as varchar(10)), 5) from tblTrackNo where GenYear = @tempYear 
--UPDATE tblTrackNo SET CurrentNo = CurrentNo + 1 where GenYear = @tempYear 

输出为CAB1180035,但我需要CAB1108035。我需要在这个月份为零(0)08。

在我的表中,我只有genYear和当前编号我是否需要为MONTH添加另一列?

+1

这种格式通常在客户端代码(在vb.net端)更好地完成,而不是在sql端存储或计算格式化值。 –

回答

1

它看起来像你年,月作出独立柱等

大多数(所有?)的DBMS我所知道的有Date类型。用它。他们投入了大量有用的东西,比如接受不同格式的日期输入,并以几乎任何您能想到的格式将它们输出为输出。

例如,如果你在Oracle中有Date类型的DT列,可以输出每月

SELECT TO_CHAR(DT, "MM") FROM MYTABLE; 

和本月将始终显示为2个位数(01,02,12 ... )

+0

好的谢谢你..但是我怎么能在月内加0(零)..就这样.. 08因为我唯一的输出是.. 118 MEANING 2011年和8月的月份(8).. – breaker

+0

我最后的问题是关于年份和时间。 。我想知道,每次我改变月份的跟踪号码将开始001 ..例如,这是我的跟踪号码.. CAB1108072 == CAB + 11的一年,八月的八月,072的运行号码... DO我需要在桌上有另一个列吗?每月更新生成追踪号码..这样的输出.. EXAmple .. 2011年8月31日运行号码是072明天是9月1日我需要跟踪号码开始001 ..因为九月是另一个月.. – breaker

0
SELECT 
    'CAB' 
    + RIGHT(YEAR(GetDate()),2) 
    + RIGHT('0' + CONVERT(VARCHAR, MONTH(GetDate())),2) 
    + Right('00000' + Cast(CurrentNo as varchar(10)), 5) 

这可能工作..

+0

谢谢CHAOS。 =] – breaker

+0

为我关于年份和时间的最后一个问题。 。我想知道,每次我改变月份跟踪号码将开始到001 ..例如,这是我的跟踪号码.. CAB1108072 ==年份CAB + 11,08月份,072跑步号码...我需要在表中有另一个列表吗?每月更改生成跟踪号码..我需要添加另一个月的列吗?这样的输出.. EXAmple .. 2011年8月31日运行号码是072明天是9月1日我需要跟踪号码开始001 ..因为九月是另一个月.. – breaker

0

用你的方法\逻辑..

Right('0' + Cast(Month(GetDate()) as varchar(10)),2)