Avatar billede Nicolai Nybegynder
28. november 2013 - 16:58 Der er 1 kommentar

Problem med CONVERT datetime fejl

Jeg prøver at køre nedenstående query, og får en fejl når en dato er angivet om '00.00.0000', hvilket er logisk nok da den er uden for daterange. Men hvordan skriver jeg mig ud af det i nedenstående kode?

UPDATE tblXSAP_AnnuityMasterData_Sandbox
SET tblXSAP_AnnuityMasterData_Sandbox.Contract =
(SELECT TOP 1 RIGHT(ContractNr, 8)
    FROM [BASS].[dbo].[tblXSAP_Contracts]
    WHERE
    CONVERT(date, '01' + '.' + Right(tblXSAP_AnnuityMasterData_Sandbox.FiscPeriod, 2) + '.' + Right(tblXSAP_AnnuityMasterData_Sandbox.FiscYear, 4), 104)
    BETWEEN CONVERT(date, '01' + '.' + RIGHT(tblXSAP_Contracts.ValidFrom, LEN(tblXSAP_Contracts.ValidFrom) - 3), 104)
    AND CONVERT(date, '01' + '.' + RIGHT(tblXSAP_Contracts.ValidTo, LEN(tblXSAP_Contracts.ValidTo) - 3), 104)
    AND tblXSAP_AnnuityMasterData_Sandbox.SerialNumber = tblXSAP_Contracts.SerialNumber
    ORDER BY CONVERT(date, tblXSAP_Contracts.ValidFrom, 104) DESC)
FROM tblXSAP_AnnuityMasterData_Sandbox
Avatar billede kjulius Novice
26. januar 2015 - 18:28 #1
Da ingen af felterne synes at være gemt som datofelter (hvilket er lidt crazy, IMHO -- især at gemme dem i dansk format, som ikke umiddelbart kan sorteres), kan du vel bare behandle dem som strenge:

UPDATE tblXSAP_AnnuityMasterData_Sandbox
SET tblXSAP_AnnuityMasterData_Sandbox.Contract =
(SELECT TOP 1 RIGHT(ContractNr, 8)
    FROM [BASS].[dbo].[tblXSAP_Contracts]
    WHERE Right(tblXSAP_AnnuityMasterData_Sandbox.FiscYear, 4)+Right(tblXSAP_AnnuityMasterData_Sandbox.FiscPeriod, 2)
    BETWEEN    RIGHT(tblXSAP_Contracts.ValidTo,4)+SUBSTRING(tblXSAP_Contracts.ValidTo,4,2)
        AND RIGHT(tblXSAP_Contracts.ValidTo,4)+SUBSTRING(tblXSAP_Contracts.ValidTO,4,2)
    AND tblXSAP_AnnuityMasterData_Sandbox.SerialNumber = tblXSAP_Contracts.SerialNumber
    ORDER BY RIGHT(tblXSAP_Contracts.ValidFrom,4)+SUBTRING(tblXSAP_Contracts.ValidFrom,4,2)+LEFT(tblXSAP_Contracts.ValidFrom,2) DESC)
FROM tblXSAP_AnnuityMasterData_Sandbox

(eller noget lign.)

Bemærk, at jeg har smidt '01' væk, i join kriteriet, da det ikke reelt bruges der.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester