Gelöst SQL Abfrage mit Datum

SMIT

Offizieller Service Partner
SPBanner
4. November 2019
122
26
Verl
Firma
SMIT Digital Services
Hallo,
kann mir einer Sagen das ich im Management Studio mit der Abfrage vom Datum falsch mache?
SQL:
SELECT [kZahlung]
      ,[cName]
      ,[dDatum]
      ,[fBetrag]
      ,[kBestellung]
  FROM [eazybusiness].[dbo].[tZahlung]
  WHERE dDatum BETWEEN '2023-02-01 00:00:00' AND '2023-02-28 23:59:59'
  ORDER BY dDatum DESC;
Fehlermeldung:
Msg 242, Level 16, State 3, Line 1
Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.

Completion time: 2023-03-15T09:52:36.5952145+01:00
Dankeschön! 🙂
Grüße
 
Zuletzt bearbeitet:

SMIT

Offizieller Service Partner
SPBanner
4. November 2019
122
26
Verl
Firma
SMIT Digital Services
..... ok ich habe für mich eine Lösung gefunden. Wäre trotzdem cool, wenn mir jemand sagt warum es oben nicht funktioniert. 🙂
Meine Lösung, sollte jemand auch mal das Problem hat: Eine Temporäre Tabelle erstellen und dabei das Datum umwandeln wie gewünscht:
SQL:
CREATE TABLE #temp_table (
  [kZahlung] int,
  [cName] varchar(50),
  [dDatum_Konvertiert] date,
  [fBetrag] decimal(18,2),
  [kBestellung] int
);

INSERT INTO #temp_table
SELECT [kZahlung], [cName], CONVERT(date, dDatum) AS dDatum_Konvertiert, [fBetrag], [kBestellung]
FROM [eazybusiness].[dbo].[tZahlung];

SELECT *
FROM #temp_table
WHERE dDatum_Konvertiert BETWEEN '2023-02-01' AND '2023-02-28'
ORDER BY dDatum_Konvertiert ASC;

DROP TABLE #temp_table;
 

MirkoWK

Sehr aktives Mitglied
14. März 2022
837
306
Hi,

das hier sollte funktionieren, ist aber sicher nur ein von vielen Möglichkeiten 😉 :

SQL:
SELECT [kZahlung]
      ,[cName]
      ,[dDatum]
      ,[fBetrag]
      ,[kBestellung]
  FROM [eazybusiness].[dbo].[tZahlung]
  WHERE FORMAT(dDatum,'yyyy-MM-dd hh:mm:ss') BETWEEN '2023-02-01 00:00:00' AND '2023-02-28 23:59:59'
  ORDER BY dDatum DESC;

Viele Grüße
Mirko
 
  • Gefällt mir
Reaktionen: SMIT

SMIT

Offizieller Service Partner
SPBanner
4. November 2019
122
26
Verl
Firma
SMIT Digital Services
Hi,

das hier sollte funktionieren, ist aber sicher nur ein von vielen Möglichkeiten 😉 :

SQL:
SELECT [kZahlung]
      ,[cName]
      ,[dDatum]
      ,[fBetrag]
      ,[kBestellung]
  FROM [eazybusiness].[dbo].[tZahlung]
  WHERE FORMAT(dDatum,'yyyy-MM-dd hh:mm:ss') BETWEEN '2023-02-01 00:00:00' AND '2023-02-28 23:59:59'
  ORDER BY dDatum DESC;

Viele Grüße
Mirko
Danke. Top,! Dann habe ich es wohl zu kompliziert gemacht 🙂
 

M_P

Sehr aktives Mitglied
16. Oktober 2014
263
58
Wenn die eingangs von dir geposte Fehlermeldung nicht hilft und du damit auch den Grund des Problems nicht erfasst hattest, solltest du evtl. lieber (noch) nicht das SQL Management Studio nutzen.

Ein gewisses Grundwissen im Bereich MS-SQL oder SQL allgemein wäre sehr zu empfehlen. Du kannst da auch schnell viel kaputt machen.
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
...
WHERE dDatum BETWEEN '20230201' AND '20230228'
....

oder

...
WHERE dDatum BETWEEN '01.02.2023' AND '28.02.2023'
...

oder
.....

Bitte unbedingt beachten:
...Du kannst da auch schnell viel kaputt machen.
vorallem kann es auch schnell passieren, dass man Abfragen mit falschen Ergebnissen erhält, auf die man sich dann verläßt und evtl. sogar Entscheidungen daraus ableitet.
 
  • Gefällt mir
Reaktionen: SMIT und M_P

SMIT

Offizieller Service Partner
SPBanner
4. November 2019
122
26
Verl
Firma
SMIT Digital Services
Wenn die eingangs von dir geposte Fehlermeldung nicht hilft und du damit auch den Grund des Problems nicht erfasst hattest, solltest du evtl. lieber (noch) nicht das SQL Management Studio nutzen.

Ein gewisses Grundwissen im Bereich MS-SQL oder SQL allgemein wäre sehr zu empfehlen. Du kannst da auch schnell viel kaputt machen.
Danke, habe schon verstanden das was mit dem Datentyp nicht stimmt, und ich ja nur einen String übergebe. Ich hatte es erst mit CONVERT versucht. Das hat nicht funktioniert. Das Stichwort FORMAT hätte mir auch gereicht 🙂
Du hast recht mir fehlt etwas Erfahrung mit SQL, aber habe immerhin geschafft mir ne temporäre Tabelle anzulegen und das Problem anders zu lösen.
Sonst hätte ich es mit PHP weiterverarbeitet, wollte nur nicht zu viele Zeile in mein Skript reinladen. Deshalb frage ich ja um noch zu lernen 🙂
Danke
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: JeanLuc

Ähnliche Themen