[MYSQL/PHP] String insert in datum veld

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DvE
  • Registratie: Mei 2000
  • Laatst online: 12:32

DvE

ORA-00000

Topicstarter
Heb veel uitleg gezien over hoe je data uit een tabel kan halen en formateren, maar ik zie nergens (een voorbeeld van) een insert statement.
Ik probeer een string (waarvan ik zeker weet dat het een datum is: DD-MM-YYYY) te inserten in een tabel met een datetime kolom

Nou kan dat bij Oracle met een to_date() functie:
code:
1
2
insert into testtabel (datumveld)
values (to_date('01-01-2004','DD-MM-YYYY'));

Hoe herschrijf je bovenstaande code voor MySQL?
Het is geen optie om de string te wijzigen in een andere format

Acties:
  • 0 Henk 'm!

  • MeIsTwisted
  • Registratie: November 2001
  • Laatst online: 28-07-2023

MeIsTwisted

not a Twisted mind

met sql moet je op yyyy-mm-dd inserten
je kan je datum dus bijv exploden en dan nieuwe string maken

Multimonitor is relax :P


Acties:
  • 0 Henk 'm!

  • DvE
  • Registratie: Mei 2000
  • Laatst online: 12:32

DvE

ORA-00000

Topicstarter
MeIsTwisted schreef op maandag 10 januari 2005 @ 11:45:
met sql moet je op yyyy-mm-dd inserten
je kan je datum dus bijv exploden en dan nieuwe string maken
Er is totaal geen mogelijkheid om in sql aan te geven wat je datumformat is?
Hopelijk dan wel in versie 5 van MySQL.

Acties:
  • 0 Henk 'm!

  • MeIsTwisted
  • Registratie: November 2001
  • Laatst online: 28-07-2023

MeIsTwisted

not a Twisted mind

of er geen mysqlfunctie is durf ik niet met zekerheid te zeggen. Moet je ff op de mysql.com kijken

Multimonitor is relax :P


Acties:
  • 0 Henk 'm!

  • DvE
  • Registratie: Mei 2000
  • Laatst online: 12:32

DvE

ORA-00000

Topicstarter
Dat dacht ik dus ook, maar dat werkt (bij mij niet).
De voorbeelden die gegeven worden zijn ook nog eens selects en geen insert statements.

Dit is niet correct volgens mysql:
code:
1
str_to_date('$datum 00:00:00','%d-%m-%Y %H:%i:%s')

waarbij $datum de waarde 01-01-2004 (bijvoorbeeld) heeft

[ Voor 10% gewijzigd door DvE op 10-01-2005 13:22 . Reden: extra uitleg $datum ]


Acties:
  • 0 Henk 'm!

  • B-Man
  • Registratie: Februari 2000
  • Niet online
code:
1
2
3
4
5
6
7
mysql> select str_to_date('01-01-2005 00:00:00', '%d-%m-%Y %H:%i:%s');
+---------------------------------------------------------+
| str_to_date('01-01-2005 00:00:00', '%d-%m-%Y %H:%i:%s') |
+---------------------------------------------------------+
| 2005-01-01 00:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.02 sec)


Werkt pas vanaf 4.1.1 (Had je ook kunnen lezen in de manual), hij is incorrect omdat je vermoedelijk een < 4.1.1 draait, en die de functie nog niet kent.

edit: hier hebben ze het ook over het converteren van een datum

[ Voor 16% gewijzigd door B-Man op 10-01-2005 13:45 ]


Acties:
  • 0 Henk 'm!

  • DvE
  • Registratie: Mei 2000
  • Laatst online: 12:32

DvE

ORA-00000

Topicstarter
Klopt i.d.d.
Heb versie 4.0.20.

Ondanks dat laat je in je voorbeeld weer een select zien en geen insert.
Maar ik neem aan dat die functie in inserts wel werkt in 4.1.1 en hoger.

Acties:
  • 0 Henk 'm!

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Ja, deze functie werkt gewoon in een insert:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> create table tmp( tmp datetime not null );
Query OK, 0 rows affected (0.01 sec)

mysql> insert into tmp values(STR_TO_DATE('01-01-2005 00:00:00', '%d-%m-%Y %H:%i:%s'));
Query OK, 1 row affected (0.01 sec)

mysql> select * from tmp;
+---------------------+
| tmp                 |
+---------------------+
| 2005-01-01 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

[ Voor 29% gewijzigd door B-Man op 10-01-2005 13:48 ]

Pagina: 1