AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Problem beim auflösen eines Datums im SQL
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Problem beim auflösen eines Datums im SQL

Ein Thema von Eppos · begonnen am 20. Nov 2007 · letzter Beitrag vom 20. Nov 2007
Antwort Antwort
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#1

SQL Problem beim auflösen eines Datums im SQL

  Alt 20. Nov 2007, 09:36
Datenbank: Firebird • Version: 1.5 • Zugriff über: bde
Hallo zusammen,

ich habe folgendes Problem. Ich möchte ein Datum Formatieren.
Der SQl:

SQL-Code:
select ID, Datum_1,
case
  when Datum_1 < '01.01.1900then '...'
  else Datum_1
end
from Daten1
order by Datum_1
Diese Ergebnis liefert folgendes:

ID, Datum_1 , Case
1 , 31.12.1899, ...
2 , 31.12.1899, ...
3 , 31.12.1899, ...
4 , 03.01.1999, 3-JAN-1999 <---- Formatierung sollte so sein wie in Datum_1

Hat da jemand nen Vorschlag?

Vielen Dank!

Gruß,
Eppos
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Problem beim auflösen eines Datums im SQL

  Alt 20. Nov 2007, 10:05
Was für ein wert wird im 1.Fall geliefert (Typ)? Vielleicht hilft ein CAST
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: SQL Problem beim auflösen eines Datums im SQL

  Alt 20. Nov 2007, 10:07
Sofern das nicht wieder nur die BDE ist (wenn ichs nicht sage tuts gleich ein anderer ) : Guck dir mit einem anständigen Admin-Tool zuerst mal die Tabellendefinition an. Also die beiden Felder da. Probiere das auch mal mit Oktober oder December. Würde mich nicht wundern, wenn dann OCT oder DEC zu sehen wäre. Irgendwo ist eine Formateinstellung falsch. Tsts Firebird mit BDE.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL Problem beim auflösen eines Datums im SQL

  Alt 20. Nov 2007, 10:09
Hi,

ich kann nur folgende Lösung vorschlagen:

SQL-Code:
select ID, Datum_1,
  case
    when Datum_1 < '01.01.1900then
      '...'
    else
      substring(Datum_1 from 9 for 2)||'.'||
      substring(Datum_1 from 6 for 2)||'.'||
      substring(Datum_1 from 1 for 4)
  end
  from Daten1
  order by Datum_1
Cu, Frank
[EDIT]OK, ist Quatsch - bei mir ist das Datum im Format JJJJ-MM-TT
Frank Reim
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SQL Problem beim auflösen eines Datums im SQL

  Alt 20. Nov 2007, 10:15
@dataspider
Danke für deinen Vorschlag, das funktioniert nicht.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: SQL Problem beim auflösen eines Datums im SQL

  Alt 20. Nov 2007, 10:19
Zitat von Eppos:
case
when Datum_1 < '01.01.1900' then '...'
else Datum_1
end[/sql]

Diese Ergebnis liefert folgendes:

4 , 03.01.1999, 3-JAN-1999 <---- Formatierung sollte so sein wie in Datum_1
Könnte nicht sogar folgendes sein : durch das if in dem Format geht Firebird davon aus, dass das
Ergebnis im selben Format vorliegen soll ?

Ist an der Theorie was dran, dann müsste das hier funktionieren :

[quote="Eppos"]case
when Datum_1 < '01.01.1900' then '...'
else when Datum_1 >= '01.01.1900' then '...'
end[/sql]

Syntax ist als Pseudocode zu verstehen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: SQL Problem beim auflösen eines Datums im SQL

  Alt 20. Nov 2007, 10:35
Firebird castet in deinem Beispiel das Datum in ein Char oder VarChar.
Würdest du statt '...' null nehmen, sollte das Format richtig sein.
Bei Dialect 1 ist das Format beim Casten von Date auf Char leider so wie oben (DD-MMM-CCYY).
Bei Dialect 3 ist das Format CCYY-MM-DD.

Ich würde jetzt wahrscheinlich eine SP schreiben, welche mit Extract die einzelnen Werte aus dem Datum extrahiert und dann wieder zusammensetzt.

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: SQL Problem beim auflösen eines Datums im SQL

  Alt 20. Nov 2007, 18:45
Vielleicht so...

SQL-Code:
SELECT id, datum_1,
       CASE WHEN datum_1 < '01.01.1900
         THEN '...'
         ELSE EXTRACT(DAY FROM datum_1) || '.' ||
              EXTRACT(MONTH FROM datum_1) || '.' ||
              EXTRACT(YEAR FROM datum_1)
       END datum
FROM daten1
ORDER BY datum_1
Gruss
Thorsten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.
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