/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL - Timestamp
Fra : Thomas Voller


Dato : 22-08-04 20:52

Hej DB-eksperter.



Jeg sidder og roder med min første MySQL-database. I en given tabel har jeg
en kolonne med typen "Timestamp". Jeg synes Timestamp-typen er supersmart,
da den automatisk indsætter det korrekte tidspunkt for oprettelse, når man
indsætter en ny række i tabellen via en web-applikation. Så slipper man for
at tænke over at indsætte tidpunktet manuelt. Dovenskaben længe leve, spring
over hvor gærdet er... osv.

Dog er det et problem for mig, hvis jeg på et senere tidspunkt vil gemme
nogle ændringer i rækken via en update-sql-sætning. Så bliver den
oprindelige værdi i Timestamp-kolonnen opdateret til at være det tidspunkt,
hvor man redigerede i rækken, i stedet for det tidspunkt man oprettede
rækken. Kan man på en fiks måde undgå at ens værdi i Timestamp-kolonnen
bliver opdateret, når man redigerer i nogle af de andre oplysninger i
rækken?

Håber det giver mening, det lyder lidt kringlet ved gennemlæsning...



 
 
Peter Brodersen (22-08-2004)
Kommentar
Fra : Peter Brodersen


Dato : 22-08-04 21:04

On Sun, 22 Aug 2004 21:51:38 +0200, "Thomas Voller"
<voller@nospam-voller.dk> wrote:

>Dog er det et problem for mig, hvis jeg på et senere tidspunkt vil gemme
>nogle ændringer i rækken via en update-sql-sætning. Så bliver den
>oprindelige værdi i Timestamp-kolonnen opdateret til at være det tidspunkt,
>hvor man redigerede i rækken, i stedet for det tidspunkt man oprettede
>rækken.

Det er lige præcis sådan, timestamp virker, ja. Hvis rækken ændres, og
man ikke ændrer timestamp-feltet, så bliver det rettet til. Det er en
feature.

Hvis du absolut stadigvæk vil bruge timestamp, kan du altid explisit
sætte den. Fx med sin egen værdi

UPDATE tabel
SET timestampfelt = timestampfelt,
fornavn = 'Hans',
efternavn = 'Hansen'
WHERE id = 10


Det kunne dog lyde som om, du ville have lige så meget glæde af at
lave et datetime-felt, og så indsætte NOW() for det felt, når du
indsætter en række. Så behøver du ikke at bekymre dig om timestamps
automatiske opdatering.

--
- Peter Brodersen
php -r 'print floor(8.2-0.2);'
perl -le 'print 5-4.9;'

Thomas Voller (22-08-2004)
Kommentar
Fra : Thomas Voller


Dato : 22-08-04 21:43

"Peter Brodersen" <usenet@ter.dk> skrev
> Det kunne dog lyde som om, du ville have lige så meget glæde af at
> lave et datetime-felt, og så indsætte NOW() for det felt, når du
> indsætter en række. Så behøver du ikke at bekymre dig om timestamps
> automatiske opdatering.


Mjah, jeg har forsøg, via phpMyAdmin, at ændre typen af kolonnen til
"DateTime" og så sætte standardværdien af kolonnen til "Now()" - Uden
anførselstegn, forstås. Det virker bare ikke. Når jeg indsætter en ny række,
uden eksplicit at tildele en værdi til DateTime-feltet via SQL, så bliver
værdien af feltet bare Null i stedet for det korrekte tidspunkt.

Kan man ikke automatisk, via en standardværdi for feltet, få indsat det
korrekte tidspunkt i et DateTime-felt? Skal man i sin SQL-sætning eksplicit
angive, at man vil indsætte det øjeblikkelige tidspunkt i kolonnen, når man
indsætter en ny række fra eksempelvis en web-applikation??



Peter Brodersen (22-08-2004)
Kommentar
Fra : Peter Brodersen


Dato : 22-08-04 21:49

On Sun, 22 Aug 2004 22:43:03 +0200, "Thomas Voller"
<voller@nospam-voller.dk> wrote:

>Mjah, jeg har forsøg, via phpMyAdmin, at ændre typen af kolonnen til
>"DateTime" og så sætte standardværdien af kolonnen til "Now()" - Uden
>anførselstegn, forstås. Det virker bare ikke.

Nej. Du skal explicit sætte det, i din INSERT-linje.

>Kan man ikke automatisk, via en standardværdi for feltet, få indsat det
>korrekte tidspunkt i et DateTime-felt?

Jo, vha. timestamp-typen, men så oplever du også dens øvrige natur,
som kan være uønsket.

> Skal man i sin SQL-sætning eksplicit
>angive, at man vil indsætte det øjeblikkelige tidspunkt i kolonnen, når man
>indsætter en ny række fra eksempelvis en web-applikation??

Ja (omend du blot angiver NOW() i dit insert-statement)

--
- Peter Brodersen
php -r 'print floor(8.2-0.2);'
perl -le 'print 5-4.9;'

Søg
Reklame
Statistik
Spørgsmål : 177514
Tips : 31968
Nyheder : 719565
Indlæg : 6408618
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste