sql >> Database >  >> RDS >> Sqlserver

converteer varchar (ddmmyyyy) naar datumformaat

ddmmyyyy is geen geldig datumformaat. Je moet eerst van die string iets maken dat kan worden geparseerd als een DATE / DATETIME . De snelste manier is misschien om gewoon SUBSTRING de stukjes in een mm/dd/yyyy formaat. Dat converteert wel met succes. Maar je hebt een VARCHAR(8) . U moet dat dus ofwel verhogen om VARCHAR(10) . te zijn (of beter nog, gewoon CHAR(10) ), of declareer een lokale variabele om de gewijzigde waarde vast te houden.

Bijvoorbeeld:

DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';

DECLARE @Date2 CHAR(10);
SET @Date2 = SUBSTRING(@Date, 3, 2)
             + '/' + SUBSTRING(@Date, 1, 2)
             + '/' + SUBSTRING(@Date, 5, 4);

SELECT @Date2, CONVERT(DATE, @Date2);
-- 03/25/2014     2014-03-25

BEWERKEN: Eigenlijk heb ik een iets eenvoudigere manier gevonden. Ik begon met deze methode, maar realiseerde me dat het niet werkte met ddmmyyyy in tegenstelling tot mmddyyyy . Ik heb op de een of andere manier gemist dat er een geschikt datumstijlnummer was voor dd/mm/yyyy . Dus, gewoon twee schuine strepen toevoegen aan de inkomende string en dan CONVERT . aanroepen werkt wel, maar alleen als je 103 . gebruikt als de "stijl". En net als bij de eerste oplossing, moet de inkomende parameter worden gewijzigd in VARCHAR(10) of CHAR(10) in plaats van VARCHAR(8) , of maak een lokale variabele aan als CHAR(10) .

DECLARE @Date VARCHAR(8); -- input parameter
SET @Date = '25032014';

DECLARE @Date2 CHAR(10);
SET @Date2 = STUFF(STUFF(@Date, 3, 0, '/'), 6, 0, '/');

SELECT @Date2, CONVERT(DATE, @Date2, 103); -- 103 = dd/mm/yyyy
-- 25/03/2014     2014-03-25

Conversie "stijlen" zijn te vinden op de MSDN-pagina voor CAST en CONVERT .




  1. Tijdelijke tabellen maken in MySQL Stored Procedure

  2. MySQL ABS() Functie – Retourneert de absolute waarde van een getal

  3. Hoe voeg ik een verwijzing toe naar de MySQL-connector voor .NET?

  4. Een kopie van uw database herstellen