AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verständnisprobleme bei MONTH
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisprobleme bei MONTH

Ein Thema von steppo · begonnen am 10. Jul 2008 · letzter Beitrag vom 10. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 11:53
Datenbank: MSSQL • Version: 8.00.194 • Zugriff über: Adoconnection
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
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 12:06
Welchen Typ hat Datum?
Markus Kinzler
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 12:10
Hallo mkinzler,

die Spalte Datum hat den Wert DateTime.
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 12:18
Die MONTH-Funktion extrahiert den Monat aus einem Datumswert (akt. Wert einer Spalte).
In anderen DBMS heisst die funktion auch Extract

select Extract( Month from Datum) ...; Natürlich kann man das auch als Bedingung in der Where-Clause nehmen
Markus Kinzler
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 12:31
Was die Function macht weis ich. Meine Frage war, wieso mein Aufruf funktioniert, obwohl kein Datum sondern eine Spalte übergeben wird!

Code:
SELECT MONTH(<date, datetime, >)[
(Original aus SQL)

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
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 12:32
Zitat von steppo:
Was die Function macht weis ich. Meine Frage war, wieso mein Aufruf funktioniert, obwohl kein Datum sondern eine Spalte übergeben wird! ...
Na weil in der Spalte ein Datum steht
Stephan B.
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 12:40
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
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 12:48
Zitat von steppo:
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
Klar,

entscheidend ist ja welche Spalte Du angibst.

Es ist ja nichts anderes als wenn Du solch eine Abfrage machst
SELECT * FROM tabelle where username = 'blubb' Alle Spalten in denen username = blubb ist
Auch hier gibst Du ja eine Spalte für den Vergleich an. Oder
SELECT * FROM tabelle WHERE Month(datum1) = Month(datum2) Alle Spalten in den der Monat von datum1 gleich dem Monat von datum2 ist
Stephan B.
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 13:36
Hallo Sharky,

natürlich gebe ich eine Spalte an.

Der Vergleich sieht aber eher so aus:

select * from Tabelle where Month(Datum) = 03 Datum ist kein Wert sondern eine SPALTE!

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!
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Verständnisprobleme bei MONTH

  Alt 10. Jul 2008, 13:39
Zitat von steppo:
... Das heißt, ich übergebe keinen Datumwert, sondern die Spalte wo dieser Wert gesucht werden soll.
Und beim ausführen setzt das DBMS den Wert aus der Spalte ein.

Zitat:
Der Übergebene Parameter an die Function Month ist also falsch!
Nein ist er nicht. Sonst würde es ja nicht funktionieren. Dieses Verhalten ist absolut normal und richtig.
Stephan B.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:05 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