Avatar billede dk_akj Nybegynder
23. september 2002 - 15:39 Der er 3 kommentarer og
1 løsning

Dateserial til dato

Hejsa

Jeg har en applikation (app_x) der indsætter en post i en database.

App_x har ikke datatypen date og time. Den indsætter derfor tider som sekunder efter midnat og datoer som dage siden 1-1-1970, altså som serials.

Det jeg gerne vil er at lave en inserttrigger der er en datetime.

Mit spørgsmål er så hvordan jeg konverterer hhv en dateserial + en timeserial til en datetime.

//akj
Avatar billede bispensgipsgebis Nybegynder
23. september 2002 - 21:39 #1
Uden at have tjekket, så vil jeg tro du kan gøre følgende. Hvis din dateserial hedder myDate og timeserial hedder myTime.


//Laver værdierne om til en variant af typen date henholdsvis time
myDate1 = DateValue(myDate)
myTime1 = TimeValue(myTime)

//Sætter ovenstående sammen til en streng
dateTimeString = cStr(myDate1) & cStr(myTime1)

Det skulle kunne gøre det.

Kan ikke huske formattet af datetime, men ovenstående returnerer i formatet MM/DD/YY så der skal måske laves lidt fiksfakserier for at få det til rette format. Tjek det ud, vend tilbage... hvis det ikke virker så skriv lige hvad formatet skal være, så kan jeg måske hjælpe.

Venlig hilsen
Rune
Avatar billede dk_akj Nybegynder
24. september 2002 - 07:11 #2
Det virker ikke.
Datevalue er jo også en vb funktion, den kender sqlserveren ikke.

//akj
Avatar billede dk_akj Nybegynder
24. september 2002 - 08:32 #3
Så fandt jeg en løsning:
dateadd(day,enddate,  dateadd(second,endtime, "00:00:00")) as c_end

Hvor enddate er min dateserial og endtime er min timeserial.

//akj
Avatar billede dk_akj Nybegynder
24. september 2002 - 10:44 #4
Hvis andre får samme problem er her syntaxen til triggeren:

create trigger tr_calcend
    on calcend for insert as

declare @mydateserial numeric(8)
declare @mytimeserial numeric(8)
declare @myregid numeric(8)
declare @myenddate datetime

select @myregid=regid, @mydateserial=enddate, @mytimeserial=endtime from inserted

set @myenddate = dateadd(day,@mydateserial+25567,  dateadd(second,@mytimeserial, "00:00:00"))

update calcend set enddatetime = @myenddate where regid = @myregid and enddate = @mydateserial and endtime = @mytimeserial
;

//akj
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