phpbar.de logo

Mailinglisten-Archive

RE: Datumsberechnung
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Datumsberechnung



folgender select ausdruck funtzt bei mir:

	select * from tblData where TO_DAYS(now()) - TO_DAYS(changed) <= 30

das setzt voraus, dass in der tabelle tblData ein feld namens "changed"
exisitiert,
dieses feld ist als timestamp(14) definiert. ein hinweis:

ein feld timestamp(14) enthaelt ein datumsfeld in einem "internen" mysql
format (YYYYMMDDHHMMSS)
naeheres auf seite 108ff der mysql-doku.

ein timestamp-feld wird automatisch auf die aktuelle uhrzeit gesetzt wenn
- das feld nicht in einem insert oder load data ausdruck gesetzt ist.
- das feld nicht in einem update ausdruck gesetzt ist, und wirklich ein feld
  im datensatz geaendert wird.
- das feld auf NULL gesetzt wird.

hinweis: das automatische update betrifft nur das erste timestamp feld in
der tabelle.

ich verwende z.b. 3 timestamp-felder in meiner db.
das erste heisst changed, das zweite eintrag und das dritte freigabeDate.
bei einem update des datensatzes wird somit automatisch das feld "changed"
auf die aktuelle
uhrzeit gesetzt. beim ersten erzeugen des datensatzes verwende ich sowas
wie:

INSERT into tblData (
	uid,
	name,
	plz,
	ort,
	email,
	eintrag
) VALUES (
	'$cgi_uid',
	'$cgi_nachname',
	'$cgi_plz',
	'$cgi_ort',
	'$cgi_email',
	NULL
)~;

meine tabelle sieht aus:

Table: tblData
+--------------+---------------+------+-----+---------+-------+
| Field        | Type          | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+-------+
| uid          | varchar(11)   |      | PRI |         |       |
| name         | varchar(80)   |      | MUL |         |       |
| plz          | varchar(5)    | YES  |     |         |       |
| ort          | varchar(80)   | YES  |     |         |       |
| changed      | timestamp(14) | YES  |     |         |       |
| eintrag      | timestamp(14) | YES  |     |         |       |
| freigabe     | set('0','1')  | YES  |     | 0       |       |
| email        | varchar(80)   | YES  |     |         |       |
| freigabeDate | timestamp(14) | YES  |     |         |       |
+--------------+---------------+------+-----+---------+-------+

bei einem insert wird das feld changed automatisch auf now() gesetzt,
und eintrag erhaelt ebenfalls das aktuelle datum, da es auf NULL
gesetzt wird.
bei einem update brauch ich mich beim feld "changed" wieder um
nichts kuemmern, da auch dieses automatisch auf die aktuelle uhrzeit
gesetzt wird. somit kann ich mit oben aufgefuehrtem sql-ausdruck
einfach nachsehen, welche datensaetze sich in den letzten x tagen
gaendert haben...
mfg

Markus Rietzler
* Wuppertal-Forum | Wuppertal-Navigator
* http://www.wuppertal-navigator.de
* eMail: markus.rietzler_(at)_wuppertal-navigator.de

Ronsdorfer Strasse 14	Fon: 0202.42 08 30
42119 Wuppertal		Fax: 0202.242 24 66
				Mobil: 0171.480 77 82


> -----Original Message-----
> From: Frank Bettenworth [mailto:fbettenw_(at)_techfak.uni-bielefeld.de]
> Sent: Sunday, February 13, 2000 7:24 PM
> To: MySQL-Mailinglist
> Subject: Datumsberechnung
>
>
> Hallo Leute,
> ich habe in meiner Datenbank ein Feld mit Datumseinträgen. Nun möchte
> ich allerdings mir nur die raussuchen, die kleiner gleich Systemdatum-30
> Tage alt sind. Oder anders ausgedrückt alle die vom heutigen Tag an
> nicht älter als 30 Tage alt sind. Wie mache ich das am besten??? Habe
> schon einiges ausprobiert, was in der Doku stand, hat aber nicht so
> recht funktioniert.
>
> Gruß
>
> Frank
>
> ---
> *** Abmelden von dieser Mailingliste funktioniert per E-Mail
> *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
>

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive