Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL, welches Datumsformat verwenden? (https://www.delphipraxis.net/140029-mysql-welches-datumsformat-verwenden.html)

PASST 10. Sep 2009 15:54

Datenbank: MySQL • Version: 4.1 • Zugriff über: ADO / ODBC

MySQL, welches Datumsformat verwenden?
 
Hallo allerseits,

leidliches Thema, ich möchte in einer MySQL Datenbank eine Abfrage mit einem Datumsvergleich (am besten mit BETWEEN) durchführen.

Die Frage, die sich aber bei jeder Datenbank stellt, wie finde ich heraus, wie muss ich das Datum im SQL-String schreiben.

Bsp.:
Heute ist der 10.9.2009, 20090910, 09-10-2009 oder 20090910 oder oder oder?

Welche Anführungszeichen benötige ich " oder ' ?

Welche Schreibweise ist die richtige und wie finde ich das generell bei Datenbanken heraus?

Gruß,
Peter

Bernhard Geyer 10. Sep 2009 15:58

Re: MySQL, welches Datumsformat verwenden?
 
Nimm parametrisierte Abfragen und gut ist!

himitsu 10. Sep 2009 16:00

Re: MySQL, welches Datumsformat verwenden?
 
bei 20090910 müßte es nichtmal ein Datumsfeld sein, da sich dieses auch als String vergleichen ließe.

ernschd 10. Sep 2009 16:02

Re: MySQL, welches Datumsformat verwenden?
 
Also ich würde sagen, Du musst das Datum so in die Abfrage schreiben, wie es in Deiner Datenbank eingetragen ist. Oder habe ich Dich falsch verstanden?

Zu den Anführungszeichen steht im Handbuch:
Zitat:

Wenn der SQL-Modus ANSI_QUOTES aktiviert ist, dürfen String-Literale nur in einfache Anführungszeichen gesetzt werden. Ein in doppelten Anführungszeichen stehender String wird als Bezeichner interpretiert.
Wenn Du also ANSI_QUOTES nicht aktiviert hast, ist es egal.

PASST 10. Sep 2009 16:13

Re: MySQL, welches Datumsformat verwenden?
 
Ja, ich weiß, parametrisierte Abfragen sind die eigentlich richtige Wahl.

Und ja, die Datumsschreibweise, welche in der Datenbank verwendet wird, ist auch genau diejenige, die funktioniert.

Wo kann ich am MySQL Server die Einstellung ANSI_QUOTES setzen?

ernschd 10. Sep 2009 16:29

Re: MySQL, welches Datumsformat verwenden?
 
Ich verstehe anscheinend wirklich nicht, was Du eigentlich willst (sorry, war ein langer Arbeitstag :wink: ).

Angenommen, in der Datenbank stehen die 2 Daten 15.6.2005 und 10.9.2009, dann musst Du in Deiner Abfrage schreiben
SQL-Code:
SELECT * FROM bla WHERE `datum` BETWEEN '1.9.2009' AND '1.10.2009'
Dann bekommst Du den 10.9.2009 als Ergebnis.
Du musst allerdings auch wirklich in dem gleichen Format schreiben, z.B. würde der 01.09.2009 nichts finden.

Wenn Du ANSI_QUOTES nicht aktiviert hast (davon gehe ich jetzt mal aus), dann kannst Du auch die doppelten Anführungszeichen verwenden.

Medium 10. Sep 2009 17:25

Re: MySQL, welches Datumsformat verwenden?
 
Zitat:

Zitat von Bernhard Geyer
Nimm parametrisierte Abfragen und gut ist!

Das, und nix anderes. Jedes weitere Gefummel ist a) zu viel gemachte Arbeit und b) schon wieder im Eimer sobald das DBMS wechselt, ggf. sogar schon nur bein einem Versionssprung, oder Sprachänderung. Es macht einfach 0 Sinn da noch was zaubern zu wollen.

anse 11. Sep 2009 06:42

Re: MySQL, welches Datumsformat verwenden?
 
MySQL verwendet per Default das amerikanische ISO Format für Datums-Felder, und nicht etwa die lokalen Formate des Servers oder Clients:
SQL-Code:
SELECT * FROM bla WHERE `datum` BETWEEN '2009-09-01' AND '2009-10-01';
SELECT * FROM bla WHERE `datumzeit` BETWEEN '2009-09-01 09:12:16' AND '2009-10-01 01:12:23';
SELECT * FROM bla WHERE `zeit` BETWEEN '09:10:11' AND '10:11:12';
Wenn man unbedingt will kann man dieses Format ändern über die Systemvariablen date_format, datetime_format und time_format:
Anzeigen:
SQL-Code:
SHOW VARIABLES LIKE '%_format';
Ändern:
SQL-Code:
SET @@global.datetime_format = '%d.%m.%Y %H:%i:%s';
Zu empfehlen ist das Ändern nicht, weil man Kompatibilitätsprobleme mit anderen Anwendungen provoziert. Warum auch, das ISO Format ist hübsch und einheitlich.

Ich verwende kein parametrisiertes SQL bisher obwohl ich die Idee ganz gut finde, sofern man dadurch keine neuen Probleme bekommt.

Bernhard Geyer 11. Sep 2009 07:33

Re: MySQL, welches Datumsformat verwenden?
 
Zitat:

Zitat von anse
MySQL verwendet per Default das amerikanische ISO Format für Datums-Felder, und nicht etwa die lokalen Formate des Servers oder Clients:

Es gib ein amerikanische ISO Format :gruebel: Wäre mir neu. Ich dachte es gibt hier nur ein länderneutrales ISO-Format das entsprechend in die EN und DIN-Norm 1:1 übernommen

anse 11. Sep 2009 18:38

Re: MySQL, welches Datumsformat verwenden?
 
Hast natürlich recht, was hab ich mir dabei bloß gedacht :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz