Avatar billede netro Nybegynder
28. november 2004 - 18:16 Der er 25 kommentarer og
1 løsning

Dato som default value - ikke også tiden

Hvordan sætter jeg default-værdien i Interbase 5.5 til dags dato? Hvis jeg bruger Now gemmes tidspunktet også.

Feltet har jeg sat til typen "Date" og dermed troede jeg egentlig også, at den kun ville rumme "yyyy-mm-dd".

- men nej, hvad er løsningen?
Avatar billede tjaz Nybegynder
28. november 2004 - 18:35 #1
prøv med date() i stedet for now()
Avatar billede pellelil Nybegynder
28. november 2004 - 21:12 #2
Jeg er ikke klar over om den findes i IB5.5 men prøv med DatoVariable = 'TODAY'
Avatar billede netro Nybegynder
29. november 2004 - 14:03 #3
Date giver fejl, men Today virker tilsyneladende perfekt. Tak!
Avatar billede pellelil Nybegynder
29. november 2004 - 14:10 #4
Jamen så må jeg jo hellere lave et svar  ;-)
Avatar billede netro Nybegynder
29. november 2004 - 14:18 #5
Det kan du tro :)
Avatar billede netro Nybegynder
29. november 2004 - 14:40 #6
Kan man egentlig ikke udtrække datoen i et bestemt format, som man kan i mange andre databaser? Fx.:

Select Format_My_Date(Datofelt, 'yyyy-mm-dd') As Godt_Format From MinTabel
Avatar billede pellelil Nybegynder
29. november 2004 - 14:46 #7
Umiddelbart tror jeg ikke at du kan "formater" datoen med mindre man caster den til "en strenge" og klipper i denne (jeg tror det er forholdvis "bøvlet"), men det er ikke noget jeg har rodet med da jeg "formatere" den i Delphi i stedet.
Avatar billede netro Nybegynder
29. november 2004 - 14:51 #8
Jeg kunne godt formatere den med C++, men datoen vil vel komme ud i det format, der er tilknyttet OS's sprog? Det nytter jo ikke noget, at jeg finder måneden med tegn 4 og 5 i strengen, hvis dette er dagen i et engelsk OS ;)
Avatar billede pellelil Nybegynder
29. november 2004 - 15:05 #9
I Delphi vil jeg gøre noget a'la:
<SNIP>
var
  DatoVar: TDateTime;
begin
  DatoVar := qEnEllerAndenQuery.FieldByName('FeltNavn').AsDate;
end;
</SNIP>

Som du kan se læser jeg ikke dato'en som en streng, men jeg er ikke klar over om du har tilsvarende muligheder i C++.

Igen er jeg ikke sikker på IB5.5, men i FB kan man Caste en dato til en char, og så vil den altid blive formateret i ISO format (CCYY-MM-DD):
<SNIP>
select cast(FeltNavn as Char(10)) as DateStr
</SNIP>

Dette burde give en streng som "2004-11-29" (jeg gætter således på at dato altid trækkes ud i dette formate) !?
Avatar billede netro Nybegynder
29. november 2004 - 15:16 #10
Nu har jeg lige prøvet. cast(FeltNavn as Char(11)) returnerer:

29-NOV-2004

Hvilke andre muligheder er der med cast()?

PS: Sig til hvis jeg skal oprette en ny tråd, da dette jo er et andet spørgsmål end det oprindelige.
Avatar billede pellelil Nybegynder
29. november 2004 - 15:36 #11
Jo vil tro at vi skal have den helt store Jørgen Klevin på banen (at klippe og klistre). Jeg vil tro at du skal kombinene brugen af CAST og EXTRACT:
<SNIP>
select
Cast(Extract(YEAR from DataVar) as Char(4)) || '.' ||
Cast(Extract(MONTH from DataVar) as Char(2)) || '.' ||
Cast(Extract(DAY from DataVar) as Char(2))
from TabelNavn;
</SNIP>
Avatar billede netro Nybegynder
29. november 2004 - 15:39 #12
Extract skulle først være implementeret fra ver. 6, har jeg læst...
Avatar billede pellelil Nybegynder
29. november 2004 - 15:42 #13
Jamen så opgradere du "bare" til FireBird 1.5 ;-)
Avatar billede netro Nybegynder
29. november 2004 - 15:42 #14
Ja, den giver fejl, men ellers smart at konkatenere dem i selve udtrækket.

Der må da kunne laves noget tilsvarende i IB5.5..
Avatar billede netro Nybegynder
29. november 2004 - 15:44 #15
Det ville jeg meget gerne, men jeg har faktisk lige nedgraderet fra IB7.1 til denne, da programmet SKAL fremvises med brug af 5.5 desværre.
Avatar billede pellelil Nybegynder
29. november 2004 - 15:47 #16
Sad lige og kiggede på Google, her fremgår det at dato'en du udtrækker fra databasen fysisk er et binært format, så det er din C++ der formatere dem som "29-NOV-2004"
Avatar billede netro Nybegynder
29. november 2004 - 15:50 #17
Det kan det vist ikke være, for jeg kørte forespørgslen i ISQL. C++ viser dem som 29-11-2004. Men hvis jeg bruger dette format til at udtrække med, kommer der ingen match.
Avatar billede pellelil Nybegynder
29. november 2004 - 15:57 #18
"Men hvis jeg bruger dette format til at udtrække med, kommer der ingen match" ? Prøver du at select på baggrund af en bestemt dato ?

Hvis du skriver "select * from tabel where dato = xxx", så er der flere forsk måder at skrive din dato på. Hvis du bruger "/" så skal datoen skrives er US-standard "mm/dd/yyyy" og hvis du i stedet bruger "." så er der efter formen "dd.mm.yyyy". Den sidste mulighed med "-" er netop med månedsnavnet "dd-mmm-yyyy".
Avatar billede netro Nybegynder
29. november 2004 - 16:04 #19
Ja, det læste jeg godt på en side, men jeg var ikke klar over, om det altid forholder sig på de tre måder. Dermed skal jeg i hvertfald have formateret datoen lidt, før jeg selekterer.

Jeg går ud fra, at det er samme formater, der anvendes ved inserts?
Avatar billede netro Nybegynder
29. november 2004 - 16:10 #20
Det virker fint med inserts, men sjovt nok får jeg kun noget retur ved select, hvis jeg anvender '29-nov-2004'...
Avatar billede pellelil Nybegynder
30. november 2004 - 08:37 #21
Jeg skal ikke kunne sige om IB5.5 opfører sig væsentlig anderledes end FB1.5, men det lyder (i mine øre) ikke rigtigt at du kun kan få din select til at virke med '29-nov-2004' - Har du prøvet noget a'la select * from Tabel where DatoFelt = '11/29/2004' (og vi er HELT enige om at der er tale om et felt af typen DATO ?)
Avatar billede netro Nybegynder
30. november 2004 - 11:41 #22
Hverken 11/29/2004 eller 29.11.2004 returnerer nogle poster - men 11-NOV-2004 gør.

Jo, feltet er af typen DATE med default-værdien TODAY (som du gav mig).

Det gør dog ikke det helt store - synes blot, det er en smule underligt, for Interbase skriver også selv, at de tre formater kan anvendes.
Avatar billede netro Nybegynder
30. november 2004 - 11:42 #23
Undskyld, jeg mente selvfølgelig: 29-NOV-2004
Avatar billede pellelil Nybegynder
30. november 2004 - 12:15 #24
Jeg er bange for at jeg må kaste håndklædet i ringen, har du overvejet at skifte til Delphi ?  ;-)
Avatar billede netro Nybegynder
30. november 2004 - 13:06 #25
Haha... Jeg har arbejdet lidt med Delphi for lang tid siden. Nu skal jeg lære C++ ;)
Avatar billede netro Nybegynder
30. november 2004 - 13:07 #26
- men tak for al din tid i hvertfald!
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