Avatar billede oziris Nybegynder
10. november 2005 - 14:06 Der er 14 kommentarer og
1 løsning

Auto Dato i MySQL

Jeg vil gerne vide hvordan man får en (DateTime) colonne i en MySQL database til automatisk at indskrive datoen, når man opretter en post. I access laver man funktionen Date(), men hvad gør man i MySQL?
Avatar billede bromer Nybegynder
10. november 2005 - 14:09 #1
Bare lav et timestamp.
Avatar billede rhandersen Nybegynder
10. november 2005 - 14:10 #2
$oprettelsesdato = $dato_array['mday'] . "-" . $dato_array['mon'] . "-" . $dato_array['year'];

Sætter du bare ind i en varchar 200.
Avatar billede steen_hansen Forsker
10. november 2005 - 14:10 #3
Kigger med. timestamp ...?
Avatar billede js1449 Nybegynder
10. november 2005 - 14:10 #4
Er der nogen der kan hjælpe mig med mySQL
jeg skal sammenligne to tabeller og finde ud af om der er forskel på dataen i disse tabeller

På fårhånd tak
fra js1449
Avatar billede bromer Nybegynder
10. november 2005 - 14:13 #5
rhandersen: En kolonne der skal indeholde dato'er eller tidspunkter skal ikke have typen varchar(200). Det skal være et timestamp eller en datetime, så det er muligt at lave operationer på den i SQL.
Avatar billede bromer Nybegynder
10. november 2005 - 14:19 #6
oziris: For at komme med en lidt længere forklaring så mener jeg at tingene hængere sådan sammen:

1. Timestamp.
Bliver opdateret hver gang du opdaterer rækken. Derfor er det super til at angive, hvornår der sidst har været aktivitet et sted.

2. Datetime
Måske kan du oprette en tabel som:

create table mytable (
  my_date datetime not null default now()
);

men det afhænger vist af storage engines etc om du må smide "default now()" så som automatisk smider det nuværerende timestamp ind på NYE rækker. Ellers kan du lave det sådan her:

create table mytable (
  my_date datetime not null
);

og så smide rækker ind emd

insert into mytable (my_date) values (now());

Jeg håber jeg har ramt rigtigt. Er lidt forvirret af at arbejde med mange databaser på samme tid.
Avatar billede oziris Nybegynder
10. november 2005 - 14:20 #7
>>bromer
Tusind tak! det var den jeg ledte efter..
Hvad hvis jeg kun vil udskrive dd-mm-yy, altså uden klokkeslet.
Jeg taler kun asp...
Avatar billede bromer Nybegynder
10. november 2005 - 14:23 #8
Der er en datatype der hedder date.
Avatar billede bromer Nybegynder
10. november 2005 - 14:23 #9
og det var ikke mig der skrev PHP nogle steder :)
Avatar billede oziris Nybegynder
10. november 2005 - 14:28 #10
kan man skrive i en Timestamp? Jeg mener hvis nogen opretter en nyhed, hvor en dato bliver autogenereret, kan man da derefter gå ind og ændre datoen?
Avatar billede bromer Nybegynder
10. november 2005 - 14:29 #11
Yepper. Det kan du gøre med en almindelige update.
Avatar billede oziris Nybegynder
10. november 2005 - 14:30 #12
Super! Mange Tak skal du have!
Avatar billede arne_v Ekspert
10. november 2005 - 15:41 #13
I MySQL kan man ikke sætte en default value til NOW()

Man skal tænke sig meget godt om inden man bruger TIMESTAMP til en oprettet
kolonne.

Den bliver nemlig også opdateret når man retter et felt i rækken.

Den er perfekt til en sidst rettet kolonne. Til en oprettet kolonne kræver det
at man aldrig opdaterer rækken.
Avatar billede bromer Nybegynder
10. november 2005 - 15:44 #14
arne_v: Er det ikke kommet i MySQL 5?
Avatar billede arne_v Ekspert
10. november 2005 - 15:47 #15
jeg har ikke checket

men http://dev.mysql.com/doc/refman/5.0/en/create-table.html siger stadig:

The DEFAULT clause specifies a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE. The exception is that you can specify CURRENT_TIMESTAMP as the default for a TIMESTAMP column.
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