declare @TestData table ( AS400Dates VARCHAR(10));insert into @TestDataVALUES ('0991231'), ('0991015'), ('0970704'), ('1080518'), ('1080707'), ('1080515'), ('1080731'), ('1080815'), ('1080822'), ('1080911'), ('1080916'), ('1080925'), ('1080926'), ('1080927'), ('1081023');SELECT AS400Dates, CAST(AS400Dates AS INT) DateAsInt, 19000000 + CAST(AS400Dates AS INT) DateAsInt2, CAST(CAST(19000000 + CAST(AS400Dates AS INT) AS VARCHAR) AS DATE) DateAsDateFROM @TestData;
SELECT CASE WHEN CAST(LEFT(Customer.STARTDATE, 2 AS VARCHAR(2))) = '98' THEN CAST(substring(Customer.STARTDATE, 3, 2) AS VARCHAR(2)) WHEN LEFT(CAST(Customer.STARTDATE, 2) AS VARCHAR(2)) = '99' THEN CAST(substring(Customer.STARTDATE, 3, 2) AS VARCHAR(2)) END AS LossMoFROM Customer
SELECT CASE WHEN CAST(LEFT(Customer.STARTDATE, 2) AS VARCHAR(2)) = '98' THEN CAST(substring(Customer.STARTDATE, 3, 2) AS VARCHAR(2)) WHEN CAST(LEFT(Customer.STARTDATE, 2) AS VARCHAR(2)) = '99' THEN CAST(substring(Customer.STARTDATE, 3, 2) AS VARCHAR(2)) END AS LossMoFROM dbo.Customer
SELECT c.STARTDATE, LossMo = CASE WHEN x.thingy IN ('98','99') THEN x.AnotherThingy ELSE NULL END FROM Customer cCROSS APPLY ( SELECT Thingy = CAST(LEFT(c.STARTDATE, 2 AS VARCHAR(2))), AnotherThingy = CAST(substring(c.STARTDATE, 3, 2) AS VARCHAR(2))) x
SELECT CASE LEFT(cast(Customer.STARTDATE as varchar(20)), 2) WHEN '98' THEN substring(cast(Customer.STARTDATE as varchar(20)), 3, 2) WHEN '99' THEN substring(cast(Customer.STARTDATE as varchar(20)), 3, 2) END AS LossMoFROM dbo.Customer
SELECT CASE WHEN CAST(LEFT(Customer.STARTDATE, 2 AS VARCHAR(2))) = '98' THEN CAST(substring(Customer.STARTDATE, 3, 2) AS VARCHAR(2)) WHEN LEFT(CAST(Customer.STARTDATE, 2) AS VARCHAR(2)) = '99' THEN SUBSTRING(CONVFERT(VARCHAR(20),(Customer.STARTDATE, 3, 2) AS VARCHAR(2)) END AS LosstMoFROM Customer
declare @TestData table ( AS400Dates VARCHAR(10));insert into @TestDataVALUES ('0991231'), ('0991015'), ('0970704'), ('1080518'), ('1080707'), ('1080515'), ('1080731'), ('1080815'), ('1080822'), ('1080911'), ('1080916'), ('1080925'), ('1080926'), ('1080927'), ('1081023');SELECT AS400Dates, CAST(AS400Dates AS INT) DateAsInt, 19000000 + CAST(AS400Dates AS INT) DateAsInt2, CAST(CAST(19000000 + CAST(AS400Dates AS INT) AS VARCHAR) AS DATE) DateAsDate, month(CAST(CAST(19000000 + CAST(AS400Dates AS INT) AS VARCHAR) AS DATE)) as TheMonthFROM @TestData;
SELECT CASE WHEN LEFT(Customer.StartDate, 2) = '98' THEN substring(convert(varchar(20),Customer.StartDate), 3, 2) WHEN LEFT(Customer.StartDate, 2) = '99' THEN substring(convert(varchar(20),Customer.StartDate), 3, 2) END AS LossMo FROM Customer