Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[sql] str_to_date --> Truncated incorrect date value:

Pagina: 1
Acties:

  • n3ck
  • Registratie: Mei 2002
  • Laatst online: 24-07 19:47
Ik zit me hier nu al een tijd op blind te staren.. heeft iemand misschien een idee hoe dit kan?
Ik gebruik MySQL en ik probeer een tabel te maken op basis van de inhoud van enkele tabellen. Nu loopt die query stuk op het omvormen van het varchar-veld naar een datum veld:
code:
1
2
create table test.t
(select month(str_to_date(b.RECDATE,'%d-%m-%Y')) from test.orders b);

resulteert in:
code:
1
2
Error Code: 1292
Truncated incorrect date value: '12-3-2009 9:19'


Als ik vervolgens
code:
1
select str_to_date('12-3-2009 9:19','%d-%m-%Y');
probeer dan krijg ik netjes de datum te zien. Probeer ik vervolgens alle records uit de tabel te halen door
code:
1
(select month(str_to_date(b.RECDATE,'%d-%m-%Y')) from test.orders b)

dan levert dit ook geen enkel probleem op en krijg ik netjes de rij (ook zonder de functie month overigens).

Ook als ik in plaats van de tabel een view maak op die tabel kan ik de view gewoon gebruiken. Wil ik die view echter opslaan in een tabel.. je raadt het al!

Iemand enig idee?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Je truncate het uren:minuten deel, en blijkbaar gebruik je voor je echte code een strictere configuratie (SQL_MODE enzo) dan je test code?

{signature}


  • n3ck
  • Registratie: Mei 2002
  • Laatst online: 24-07 19:47
Voutloos schreef op donderdag 26 augustus 2010 @ 20:18:
Je truncate het uren:minuten deel, en blijkbaar gebruik je voor je echte code een strictere configuratie (SQL_MODE enzo) dan je test code?
Oh mijn god zeg.. ik heb niet veel kennis van MySQL en dat blijkt maar weer (normaal is de database altijd gewoon netjes klaargezet etc, maar nu moet ik hem thuis zelf maken). Even googlen op SQL_MODE en Truncated incorrect date value:

leverde wel het gewenste resultaat. Ik heb het verhopen door
code:
1
SET SQL_MODE=''
te gebruiken.
Hartelijk dank!! _/-\o_

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Let wel SQL_MODE='' is de (helaas default) modus waarin mysql dus absoluut nooit klaagt, hoe erg je de database ook mishandeld. Als ooit een productieserver stricter draait heb je weer dit probleem, dus je kan het beste tijdens het programmeren zo strict mogelijk werken.

-Standaard dev advies #1

offtopic:
En SQL_MODE is de grootste wtf van mysql. Een betere wereld begint met altijd strict zijn. :Y)

[ Voor 14% gewijzigd door Voutloos op 26-08-2010 21:16 ]

{signature}


  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 13:29
Dat is geen oplossing natuurlijk ;) De originele mode zorgde er juist voor dat je als developer 'echte' sql moet gebruiken zonder dat mysql allemaal aannames voor je doet.

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.