Получить год и месяц из SQL - PullRequest
0 голосов
/ 31 августа 2011

Я хочу знать, как я могу получить год и месяц в моей базе данных.Например, предположим, что это август 2011 г. Мне нужен следующий вывод: 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 ]

1 голос
/ 31 августа 2011

Похоже, вы создаете отдельные столбцы для ГОДА, МЕСЯЦА и т. Д.

Большинство (все?) СУБД, о которых я знаю, имеют тип Date. Используй это. Они добавили в него много полезных вещей, таких как принятие даты в разных форматах и ​​выдача их в виде выходных данных практически в любом формате, который вы только можете придумать.

Например, если у вас есть столбец DT типа Date в Oracle, вы можете вывести месяц как

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

и месяц всегда будет отображаться в виде 2 цифр (01, 02, ... 12)

0 голосов
/ 31 августа 2011

Используя ваш метод \ логика ..

Right('0' + Cast(Month(GetDate()) as varchar(10)),2)
0 голосов
/ 31 августа 2011
SELECT 
    'CAB'
    + RIGHT(YEAR(GetDate()),2)
    + RIGHT('0' + CONVERT(VARCHAR, MONTH(GetDate())),2)
    + Right('00000' + Cast(CurrentNo as varchar(10)), 5)

Это может сработать ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...