Avatar billede hugopedersen Nybegynder
02. marts 2010 - 09:23 Der er 15 kommentarer og
1 løsning

Indsæt dato tid som default

Jeg er ved at forsøge at konvertere en db til MySQL men er løbet ind i et sikkert ganske simpelt problem.
I en tabel er der et datetime felt hvor jeg som standard skal have sat dato+tid ind
På den eksisterende M$ SQL er det jo rimeligt simpelt at sætte getdate() ind som default, men det synes jeg ikke lige jeg kan få til at spille på MySQL
Avatar billede michael_stim Ekspert
02. marts 2010 - 09:32 #1
Det er måske endnu mere enkelt med MySQL. Har du kigget på timestamp?
Avatar billede hugopedersen Nybegynder
02. marts 2010 - 09:36 #2
Nej
Avatar billede hugopedersen Nybegynder
02. marts 2010 - 09:40 #3
OK - feltet skal så være af typen TIMESTAMP og default skal være CURRENT_TIMESTAMP så vidt jeg kan læse mig frem til.
Avatar billede arne_v Ekspert
02. marts 2010 - 14:22 #4
Husk at laese det med smaat i dokumentationen for TIMESTAMP !
Avatar billede hugopedersen Nybegynder
02. marts 2010 - 14:27 #5
Hvad mener du?
Avatar billede arne_v Ekspert
02. marts 2010 - 14:59 #6
At TIMESTAMP felter ved visse kombinationer af options opdaterer feltet hver gang raekken opdateres. Meget smart for "lastmodified". Ikke smart for "created". Naerlaes om de options.
Avatar billede hugopedersen Nybegynder
02. marts 2010 - 15:04 #7
OK på den tricky måde.

Kan i ikke smide et par svar for input.
Avatar billede arne_v Ekspert
02. marts 2010 - 20:13 #8
Jeg tror at jeg ville finde det meget fristende at bruge DATETIME som type og så lade applikationen sætte nu ind eksplicit.

Og et svar fra mig.
Avatar billede hugopedersen Nybegynder
02. marts 2010 - 20:23 #9
Det kan du nu nok have lidt ret i men da det virker fint både på MS Access og MS SQL og sådan set også SQLite som er de 3 andre type databaser kunden kan anvende, så var det jo smart om det var magen til på MySQL :-)
Men det er kun 1 tabel hvor jeg rent faktisk bruger det felt til noget, så det var nok til at overkomme at lave om.
Avatar billede arne_v Ekspert
02. marts 2010 - 20:34 #10
TIMESTAMP er perfekt til "lastmodified" men til andre felter synes jeg at DATETIME er mere logisk.

Det er ikke trivielt at skrive database uafhængigt kode.

Men det tager længere tid inden ens app er database uafhængig, hvis man ikke går i gang med det.

Og der er masser af andre databaser derude: Oracle, DB2, PostgreSQL, FireBird etc..
Avatar billede hugopedersen Nybegynder
02. marts 2010 - 20:41 #11
Det har du ret i, men jeg har altid anvendt at lægge det ind i tabellen med GETDATE() af den simple grund at så er jeg sikker på at det er serveren der bestemmer og klienter med afvigende ur har ingen indflydelse.

Men jeg vil se om ikke jeg kan tage mig sammen til at lave det om i næste version af programmet.

Lige nu har jeg et meget mere alvorligt emne for vores produktions-server er begyndt at melde fejl på sin RAID controller.

(min Delphi komponent understøtter også de nævnte db, men har ikke haft brug for dem endnu)
Avatar billede michael_stim Ekspert
02. marts 2010 - 21:03 #12
Det er også serveren der bestemmer med datetime ;o)
Avatar billede arne_v Ekspert
02. marts 2010 - 21:06 #13
Og hvis ikke den accepterer en default NOW() så kan man jo angive NOW() in sin INSERT.
Avatar billede hugopedersen Nybegynder
03. marts 2010 - 06:55 #14
Jeg bruger ikke en insert i dette tilfælde da det er mit datagrid direkte der styrer det.

Hvis man sender en datetime værdi med over fra klienten så skal serveren ikke blande sig i om den ikke passer med dens tid efter min bedste overbevisning.
Avatar billede hugopedersen Nybegynder
04. marts 2010 - 09:04 #15
michael_stim> kan du ikke lige trykke på svarknappen?
Avatar billede michael_stim Ekspert
04. marts 2010 - 11:19 #16
Ellers tak, samler ikke.
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