Chris: MySQL: Datum für TIMESTAMP-Funktion vorformatieren

Hallo!

Ich habe eine Spalte mit Datumsangaben im deutschen Format: DD.MM.YYYY

Ich möchte mit Hilfe der Timestamp-Funktion bestimmte Datensätze, die in einem definierten Zeitraum liegen, filtern.

Wie kann ich die Datumsspalte für die Timestamp-Funktion vorformatieren? Ich dachte so:

WHERE UNIX_TIMESTAMP(TO_DATE(shop_bestellungen.be_datum,YYYYMMDD)) BETWEEN UNIX_TIMESTAMP(20021128) AND UNIX_TIMESTAMP(20021231)

Das geht aber nicht. :(

Weiß jemand Rat?

  1. Wie funktioniert dieses Statement mit einem deutschen Datum?

    SELECT DATE_FORMAT(datum, '%Y%m%d') FROM tabelle

    Die Spalte "datum" enthält ein Datum im deutschen Format. Es wird aber automatisch von einem englischen Format ausgegangen...

    1. Hallo,

      Wie funktioniert dieses Statement mit einem deutschen Datum?

      SELECT DATE_FORMAT(datum, '%Y%m%d') FROM tabelle

      Die Spalte "datum" enthält ein Datum im deutschen Format. Es wird aber automatisch von einem englischen Format ausgegangen...

      Der jeweilige Formatstring kann bliebig angepasst werden, auch mit Trennzeichen:

      SELECT DATE_FORMAT(datum, '%d.%m.%Y') FROM tabelle

      MfG, Thomas

      1. SELECT DATE_FORMAT(datum, '%d.%m.%Y') FROM tabelle

        Ja klar. Nur das Problem ist, dass das deutsche Datum im englischen Format umgewandelt wird...

        1. Hallo,

          Ja klar. Nur das Problem ist, dass das deutsche Datum im englischen Format umgewandelt wird...

          Wenn Dein Datum so gespeicher ist:
          30112002, dann erzeugt diese Abfrage ein Datum in der Form 2002-11-30:

          SELECT CONCAT(SUBSTRING(datum,5,4),"-",SUBSTRING(datum,3,2),"-",SUBSTRING(datum,1,2)) FROM tabelle

          MfG, Thomas

          1. Hallo,

            Ja klar. Nur das Problem ist, dass das deutsche Datum im englischen Format umgewandelt wird...

            Wenn Dein Datum so gespeicher ist:
            30112002, dann erzeugt diese Abfrage ein Datum in der Form 2002-11-30:

            SELECT CONCAT(SUBSTRING(datum,5,4),"-",SUBSTRING(datum,3,2),"-",SUBSTRING(datum,1,2)) FROM tabelle

            MfG, Thomas

            KLASSE!!! Vielen Dank!!!!!

  2. Hallo,

    Wie kann ich die Datumsspalte für die Timestamp-Funktion vorformatieren?

    Uebergib das Datum an UNIX_TIMESTAMP in dieser Form als Zeichenkette:
    UNIX_TIMESTAMP("2002-11-30")

    Zum Testen:

    mysql> SELECT UNIX_TIMESTAMP("2002-11-30");
    +------------------------------+
    | UNIX_TIMESTAMP("2002-11-30") |
    +------------------------------+
    |                   1038610800 |
    +------------------------------+
    1 row in set (0.22 sec)

    MfG, Thomas