Laden...

SELECT MAX(Datum) ... liefert nicht den Max Wert

Erstellt von echdeneth vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.479 Views
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren
SELECT MAX(Datum) ... liefert nicht den Max Wert

verwendetes Datenbanksystem: <MySQL, MyISAM>

Moin,

ich werwende für die Ermittlung des höchsten Wertes innerhalb eines Monats (wird am Anfang jedes Monats auf 1 gesetzt) folgenden einfachen Query:


SELECT MAX(`LfdNr`) FROM `Rechnungen` WHERE YEAR(`Belegdatum`) = XXXX AND MONTH(`Belegdatum`) = XX

Diese Abfrage klappt auch für den Juli.
Nur im August wurde der MAX nur bis 9 abgezeigt, die 10 (mittlw. schon mehrfach) nicht mehr. Auch die 11, per Hand eingetragen wird nicht gewertet.

Update: Zahlenwerte jetzt von 2-19
Wenn ich:
SELECT * FROM Rechnungen WHERE MONTH(Belegdatum) = 8
eingebe erhalte ich eine korrekte Antwort (18 Einträge, 2-19), mit Max(LFDNR) nur die 9

Habe nicht den geringsten Schimmer was da falsch ist...

Danke im Vorraus

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

16.828 Beiträge seit 2008
vor 4 Jahren

Was ist LfdNr für nen Typ?
Riecht fischig...

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

varchar(45) - Facepalm...
aber wenn dass das Problem ist warum wurde im Juli richtig ermittelt?

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

16.828 Beiträge seit 2008
vor 4 Jahren

Bin mir nicht 100% sicher, was Du meinst.
Aber im Falle von varchar ist das Verhalten, das Du hier beschreibst, absolut korrekt.

C
2.121 Beiträge seit 2010
vor 4 Jahren

Lass dir das Feld sortiert ausgeben, vielleicht erkennst du dann was da wie drin stand und warum es im Juli geklappt hat.

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

Habe in INT umgewandelt und funzt

...Wald vor lauter Bäumen nicht gesehen...

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

S
25 Beiträge seit 2014
vor 4 Jahren

Hi,

mal ne doofe Frage wieso verwendest du nicht einfach als Datentyp fürs Datum Date

T
2.222 Beiträge seit 2008
vor 4 Jahren

@Soier
Meinst wohl Timestamp.
Wäre auch für ein Belegdatum Feld in der DB sinnvoller als ein int oder andere Lösungen, die dann sont wie interpretiert werden müssen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.828 Beiträge seit 2008
vor 4 Jahren

Denkt dran, dass man für Datumswerte in Datenbanken die .NET DateTimeOffset Klasse verwendet und nicht DateTime!