Avatar billede ecpower Nybegynder
04. maj 2007 - 18:46 Der er 10 kommentarer og
1 løsning

Fjerne datodelen fra et datetime felt

Når nedenstående udtryk fjerner tidsdelen fra et datetime felt, kan man så ikke gøre noget tilsvarende der fjerner datodelen?

CONVERT (datetime, CONVERT(varchar, GETDATE(),103),103)

Venlig hilsen KH
Avatar billede arne_v Ekspert
04. maj 2007 - 19:20 #1
proev 108
Avatar billede arne_v Ekspert
04. maj 2007 - 19:25 #2
men jeg ville nok flytte den formatering fra SQL op i applikationen
Avatar billede editone Nybegynder
07. maj 2007 - 09:45 #3
Nå du indsætter en record i databasen burde du blot indsætte getdate()
også når du trækker det ud af databasen kan du dele det op her har jeg lavet en samlet sql forspørgsel som henter begge ting ud. :)

(erstat TABLE med din tables navn, Erstat DATABASE med din databases navn)
SELECT CONVERT(char(10),TABLE,101) as 'Dato',
Right(TABLE,7) as 'Tid'
FROM DATABASE

Held og lykke med det
Mvh editone
Avatar billede editone Nybegynder
07. maj 2007 - 10:22 #4
Udover det kan du også bare omskrive funktionen lidt:

INSERT INTO test (dato) VALUES (Right(getdate(),7))

så smider den kun klokkeslettet ind..
Men du vil stadigt være nødt til at bruge den anden funktion til at udskrive det med da den selv udfylde de felter du ikke skriver :)

SELECT Right(TABLE,7) as 'Tid'
FROM DATABASE
Avatar billede ecpower Nybegynder
07. maj 2007 - 11:25 #5
Hej og tak for kommentarerne
Alle disse metoder virker fint til at skippe datoen. Grunden til at jeg har problemet er at tidsfelterne skal læses af en "Navision Attain" klient. Jeg har så fundet ud af at det kan lade sig gøre hvis det ser såddan ud: 01-01-1754 10:41:00:000 Så vises tiden korrekt i Navision.
Når jeg bruger CONVERT ser det ud til at datoen formatteres til 01-01-1900 og så fejler det fra Navision. Men hvordan får jeg skrevet denne faste datoværdi ind?
Avatar billede editone Nybegynder
07. maj 2007 - 11:36 #6
Du kunne bare vælge at skrive dato / tid ind i et almindeligt varchar felt istedet for et datetime felt ved ikke om dette vil løse de problemer du sidder med ved ikke ret meget om det der Navision Attain klient..

Men du kan sætte en fast dato ved at gøre således:
INSERT INTO test (dato) VALUES ('01-01-1900 ' + Right(getdate(),7) + '')
Avatar billede editone Nybegynder
07. maj 2007 - 11:37 #7
INSERT INTO test (dato) VALUES ('01-01-1754 ' + Right(getdate(),7) + '')
Avatar billede editone Nybegynder
07. maj 2007 - 11:38 #8
Ved ikke om det er meningen du vil have 3 nuller på til sidst men det kan simpelt tilføjes:

INSERT INTO test (dato) VALUES ('01-01-1754 ' + Right(getdate(),7) + ' 0')
Avatar billede editone Nybegynder
07. maj 2007 - 11:39 #9
Arghhh nu skal jeg nok stoppe med at spamme mere :) sorry

Men du kan ikke tilføje det 0 tilsidst for så er der ikke plads i datetime feltet.
Avatar billede ecpower Nybegynder
07. maj 2007 - 12:16 #10
Mange tak. Det med den faste værdi virker perfekt efter hensigten
Avatar billede editone Nybegynder
07. maj 2007 - 22:24 #11
Det var så lidt spørg endeligt løs..

Dine spørgsmål gør mig stærker i SQL :)
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