Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen? (https://www.delphipraxis.net/61107-eine-sql-abfrage-jeden-tag-bestimmte-zeit-anzeigen.html)

Karstadt 17. Jan 2006 07:13

Datenbank: MYSQL • Version: 4 • Zugriff über: ODBC

Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Hallo. Gibt es so eine Abfrage mit den man folgendes erreichen kann:

Jeden Tag werden buchungssätze gebucht. Nun möchte ich sehen welche Datensätze wurden (TÄGLICH) in Zeit von 14:00 bis 16:00 gebucht.

in einen Feld werden bei mir Datum+Zeit gespeichert. Wie kann ich das realisieren?

Sharky 17. Jan 2006 07:32

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Hai Karstadt,

möchtest Du alle Buchungen sehen die in diesem Zeitraum gemacht wurden oder nur die eines bestimmten Tages?

Karstadt 17. Jan 2006 07:50

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
z.B. ich will von 12.12.05 bis 31.12.05 alle Buchungssätze mir anschauen, die in Zeit von 10:00 bis 12:00 gemacht wurden.

12.12.05 10-14
...
25.12.05 10-14
...
31.12.05 10-14

:?:

Sharky 17. Jan 2006 07:55

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Der SQL-Befehl könnte dann so aussehen:
SQL-Code:
SELECT * FROM tabelle
WHERE (YEAR(buchung) = :jahr) AND (MONTH(buchung) = :monat)
AND (Day(buchung) BETWEEN :tag_von AND :tag_bis)
AND (HOUR(buchung) BETWEEN 14 AND 15)
Jetzt müsstest Du nur noch die Werte für Jahr, Monat, Tag_von und Tag_bis (über Parameter) füllen.
Das Feld buchung ist das Datumsfeld.

Jelly 17. Jan 2006 08:13

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Vorsicht Sharky, mit deiner Abfrage kriegst Du aber nicht die Buchungen in einem Zeitraum der über ein Monatsende hinaus geht, z.B. vom 20.12.2005 bis 10.01.2006

Ich würd mal bei MySQL in der Online hilfe nachschauen. Es gibt etliche Datumsfunktionen, und eine die sicherlich nütlzlich ist, wär eine die aus einem datetime Feld (17.01.2006 10:12:44) nur das Datum extrahiert (20060117)...

Sharky 17. Jan 2006 08:47

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Zitat:

Zitat von Jelly
...in einem Zeitraum der über ein Monatsende hinaus geht, ...

Hai Jelly,

damit hast Du natürlich recht. Darum ja auch meine Frage nach dem zu berücksichtigenden Zeitraum.
Anhand des Beispieles von Karstadt bin ich davon ausgegangen das immer nur Buchungen innerhalb eines Monats abgefragt werden.

Wenn man bei mySQL nur den Datumsteil eindes DateTime-Feldes haben möcht einfach mit DATE(feldname) arbeiten.

Das wäre dann für diesen Fall:

SQL-Code:
SELECT * FROM tabelle
WHERE (DATE(buchung) BETWEEN DATE(:start_datum) AND DATE(:end_datum))
AND (HOUR(buchung) BETWEEN 14 AND 15)

Jelly 17. Jan 2006 11:23

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
:thumb:
Ich liebe es wenn ein Plan funktioniert :-)
Damit mein ich, dass ich immer wieder die Leute bewundere die all die Funktionen im Kopf haben.

alzaimar 17. Jan 2006 11:53

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Die Abfrage kann eine Indizes verwenden, ist also bei großen Tabellen grottenlangsam...
In diesem Fall wäre es sicherlich ratsam schon in der Tabelle Datum und Unhrzeit getrennt zu speichern.

Karstadt 17. Jan 2006 20:09

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Wie würde das aussehen bei 14:10 bis 15:20 (es sind minuten hinzu gekommen)

Karstadt 18. Jan 2006 11:12

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
wie würde das eigentlich mit minuten aussehen?

12:15
14:13?

Sharky 18. Jan 2006 11:22

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Zitat:

Zitat von Karstadt
wie würde das eigentlich mit minuten aussehen? ...

Hai Karstadt,

das "pushen" von Beiträgen ist bei uns, wie Du sicher weisst, nicht gerne gesehen!

Aber überlege doch einmal. In meinem SQL-Code oben findest Du funktionen die aus dem Datumsfeld das Jahr (Year), den Monat (Month), den Tag (Day) und die Stunde (Hour) extrahieren. Wie könnte nun der Funktionsname für die Minuten lauten?

Karstadt 18. Jan 2006 11:38

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Minute (hätte ich mir denken können).. :???:

Karstadt 18. Jan 2006 12:48

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Hallo. Funktioinert nicht wenn ich folgenden Selektion starte:

Delphi-Quellcode:

select * from Tabelle
WHERE (DATE(datumzeit) BETWEEN
DATE("2005-01-01") AND
DATE("2006-01-01"))
AND (HOUR(datumzeit) BETWEEN 14 AND 15)
AND (MINUTE(datumzeit) BETWEEN 30 AND 10)


Zeige mir alle DS an die in Zeitraum von 2005.01.01 14:30 und in Zeitraum von 2006.01.01 15:10 liegen.

Ergebniss 0 DS

Karstadt 18. Jan 2006 13:11

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
select * from Tabelle
WHERE (DATE(datumzeit) BETWEEN
DATE("2005-01-01") AND
DATE("2006-01-01"))
AND TIME(datumzeit) BETWEEN TIME("14:30") AND TIME("15:10")

Karstadt 18. Jan 2006 17:55

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Hallo. Hat jemand das mit SQLServer 4.0 ausprobiert? Es kommt zu einer Syntaxfehler! Bei 4.1 aber nicht. Datum Format ist korrekt nur bei Funktion DATTE bzw. TIME kommt diese Fehler :wall:

Hansa 18. Jan 2006 18:14

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Du sollst doch nicht pushen ! :warn: :mrgreen: Schon mal was von CAST gehört ? Oder von Stored Procedures ?

Delphi-Quellcode:
GESNETTO = CAST (BETRAG / (1 + MWSTPROZ / 100) AS DECIMAL (15,2));
Baue so ein Ding zusammen und fertig. Datum ist nicht viel anders.

Karstadt 18. Jan 2006 18:35

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Forum ist dafür da um Fragen zu stellen oder verstehe ich was Falsch? :gruebel:

alzaimar 18. Jan 2006 19:45

Re: Eine SQL Abfrage (Jeden Tag bestimmte Zeit) anzeigen?
 
Ich würde die Abfrage sowieso anders formulieren, damit ein Index auf dem Datum greifen kann:
Delphi-Quellcode:
select * from Tabelle
 where Datum between '2005-01-01 14:00 and '2006-01-01 16:00'
   and Time (Datum) between '14:00' and '16:00'
Wie die Syntax funktioniert, weiss ich nicht, aber durch die erste Where-Klausel kann der Optimizer einen etwaigen Index auf 'Datum' berücksichtigen, was bei der Geschichte über 'DATE (Datum)' nicht geht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 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