![]() |
Datenbank: MSSQL • Version: 8.00.194 • Zugriff über: Adoconnection
Verständnisprobleme bei MONTH
Hallo Leute,
ich habe ein Verständnisproblem. Ein normaler select-Befehl sieht wie folgt aus. Select(anzuzeigende Spalten) from (Tabelle) where (Spalte) = (Wert). O.K. Die Syntax von MONTH erwartet als Parameter einen Datumwert(z.B."12.05.2008"). Das ist doch Blödsinn, da ich in diesem Datum den Monat doch sehe! (Na ja, kann ab und zu ganz Hilfreich sein!) Sinnvoller wäre es doch, wenn ich die Spalte angebe, inder nach diesem Monat gesucht werden soll. Also in etwa so: select * from Tabelle where Month(Datum) = 03(März) //Datum ist der Spaltenname in der Tabelle. Nun, führe ich diesen Befehl im SQL QUERY ANALYSER aus, so bekomme ich mein gewünschtes Ergebnis, obwohl dieser Befehl nicht der Syntax entspricht, oder besser gesagt kein Datum übergeben wird. Alles andere, damit meine ich eine Datumangabe, muß in den Typ Datetime konvertiert werden. Anhand welcher Kriterien filtert SQL meine Abfrage? (Wie gesagt das Ergebnis stimmt 100%) Woher weiß SQL, wo es suchen muß? (Welche Spalte) Wieso bekomme ich ein richtiges Ergebnis? Gruß Steppo |
Re: Verständnisprobleme bei MONTH
Welchen Typ hat Datum?
|
Re: Verständnisprobleme bei MONTH
Hallo mkinzler,
die Spalte Datum hat den Wert DateTime. |
Re: Verständnisprobleme bei MONTH
Die MONTH-Funktion extrahiert den Monat aus einem Datumswert (akt. Wert einer Spalte).
In anderen DBMS heisst die funktion auch Extract
SQL-Code:
Natürlich kann man das auch als Bedingung in der Where-Clause nehmen
select Extract( Month from Datum) ...;
|
Re: Verständnisprobleme bei MONTH
Was die Function macht weis ich. Meine Frage war, wieso mein Aufruf funktioniert, obwohl kein Datum sondern eine Spalte übergeben wird!
Code:
(Original aus SQL)
SELECT MONTH(<date, datetime, >)[
Bei der eigentlichen Syntax wird auch keine Spalte übergeben, sondern nur aus einem Datumwert der Monat extrahiert. Mir geht es darum die Fehlerquelle so gering wie möglich zu halten. Da ich die Funtkion nicht standardmäßig verwende, also quasi mißbrauche, wüßte ich gern ob diese Vorgehensweise Gefahren (falsches Ergebnis z.B. bei zweiter Datum-Spalte) birgt. Gruß Steppo |
Re: Verständnisprobleme bei MONTH
Zitat:
|
Re: Verständnisprobleme bei MONTH
Hallo Shraky,
das heißt, auch wenn ich nun eine zweite Datumspalte einfüge, gäbe es keine Probleme! Sehe ich das richtig? Gruß Steppo |
Re: Verständnisprobleme bei MONTH
Zitat:
entscheidend ist ja welche Spalte Du angibst. Es ist ja nichts anderes als wenn Du solch eine Abfrage machst
SQL-Code:
Alle Spalten in denen username = blubb ist
SELECT * FROM tabelle where username = 'blubb'
Auch hier gibst Du ja eine Spalte für den Vergleich an. Oder
SQL-Code:
Alle Spalten in den der Monat von datum1 gleich dem Monat von datum2 ist
SELECT * FROM tabelle WHERE Month(datum1) = Month(datum2)
|
Re: Verständnisprobleme bei MONTH
Hallo Sharky,
natürlich gebe ich eine Spalte an. Der Vergleich sieht aber eher so aus:
SQL-Code:
Datum ist kein Wert sondern eine SPALTE!
select * from Tabelle where Month(Datum) = 03
Das heißt, ich übergebe keinen Datumwert, sondern die Spalte wo dieser Wert gesucht werden soll. Der Übergebene Parameter an die Function Month ist also falsch! |
Re: Verständnisprobleme bei MONTH
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz