我想知道如何将年份和月份输入我的数据库。例如,假设它是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添加另一列?
答案 0 :(得分:1)
看起来你正在为YEAR,MONTH等制作单独的列。
我所知道的大多数(所有?)DBMS都有Date
类型。用它。他们在其中添加了许多有用的东西,比如接受不同格式的日期输入,并以几乎任何你能想到的格式将它们作为输出。
例如,如果您在Oracle中有DT
类Date
列,则可以将月份输出为
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)