# Default Unix_timestamp



## Wolfsbein (11. August 2004)

Hallo

ich will das in ein INT Feld automatisch der aktuelle Timestamp eingetragen wird.

```
MYDATE INT(10) NOT NULL DEFAULT 'UNIX_TIMESTAMP(NOW())'
// oder auch
MYDATE INT(10) NOT NULL DEFAULT 'UNIX_TIMESTAMP()'
```
Leider macht das ganze nicht so ganz das was ich will, da in MYDATE immer 0 steht, wenn ich nichts eingebe. Was muss ich anders machen? Danke.


----------



## Thomas Darimont (11. August 2004)

Hallo,


```
mysql> drop table if exists times;
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> create table times (id int, clmTime TIMESTAMP not null default 'UNIX_TIME
STAMP()');
Query OK, 0 rows affected (0.02 sec)

mysql>
mysql> insert into times (id) values (1);
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into times (id) values (2);
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into times (id) values (3);
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> select * from times;
+------+----------------+
| id   | clmTime        |
+------+----------------+
|    1 | 20040811171411 |
|    2 | 20040811171411 |
|    3 | 20040811171411 |
+------+----------------+
3 rows in set (0.00 sec)
```

Seltsamerweise ist das neben der deklaration des clmTime Feldes als Varchar die einzige
(von mir ausprobierte) Möglichkeit einen Wert != 0 zu bekommen.

clmTime hat dann das Format: YYYYMMDDHHMMSS

(server version: 3.23.57-nt)

In der Doku steht jedoch bei UNIX_TIMESTAMP():



> UNIX_TIMESTAMP()
> UNIX_TIMESTAMP(date)
> If called with no argument, returns a Unix timestamp (seconds since '1970-01-01 00:00:00' GMT) as an unsigned integer. If UNIX_TIMESTAMP() is called with a date argument, it returns the value of the argument as seconds since '1970-01-01 00:00:00' GMT. date may be a DATE string, a DATETIME string, a TIMESTAMP, or a number in the format YYMMDD or YYYYMMDD in local time.
> mysql> SELECT UNIX_TIMESTAMP();
> ...



Gruß Tom


----------



## Wolfsbein (11. August 2004)

Das heißt kurz gesagt, dass ich die Zeit nicht der DB überlassen kann, sondern doch mit PHP abfragen und dann einfügen muss?


----------



## Thomas Darimont (11. August 2004)

Genau ... wobei das aber irgendwie anders gehen MUSS!

Gruß Tom


----------



## bn (11. August 2004)

Hallo,

ich empfehle dir anstatt eines Integer-Feldes ein Feld des Typs "TIMESTAMP".
In dieses Feld kannst du mit NOW() den aktuellen Timestamp eintragen .

cu Bloddy


----------



## Wolfsbein (12. August 2004)

So wie ich das sehe ist das TIMESTAMP von MySQL Format nicht das Unix Timestamp Format. Also wertlos.


----------



## bn (12. August 2004)

Hallo,

ja das ist richtig - der MySQL Timestamp ist nicht der UNIX_TIMESTAMP, da er im Format YYYYMMDDHHMMSS abgelegt wird. Aber er unterstützt das Format des UNIX_TIMESTAMP indirekt:


```
// feld_mit_timestamp stellt ein Feld des Typs TIMESTAMP dar
SELECT feld_mit_timestamp,UNIX_TIMESTAMP(feld_mit_timestamp) AS unix_ts FROM tabelle
```
- "unix_ts" gibt dir deinen gewünschten Timestamp (Sekunden seit 1970) aus.


Vielleicht hilft es dir ja .

cu Bloddy


----------



## Wolfsbein (13. August 2004)

Ja das ist mir schon klar. Mich wundert nur, dass die naheliegenste Lösung anscheinend nicht geht .


----------

