从SQL获取年份和月份

时间:2011-08-31 02:25:06

标签: sql sql-server vb.net date

我想知道如何将年份和月份输入我的数据库。例如,假设它是2011年8月。我需要的输出是这样的:CAB 11 08 001(跟踪号码中的CAB + YEAR + MONTH + CURRENT NO。)

这是我的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和Current No.我是否需要为MONTH添加另一列?

3 个答案:

答案 0 :(得分:1)

看起来你正在为YEAR,MONTH等制作单独的列。

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

例如,如果您在Oracle中有DTDate列,则可以将月份输出为

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

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

答案 1 :(得分:0)

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

那可能有用......

答案 2 :(得分:0)

使用您的方法\ logic ..

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