AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken extrahieren von Zeit aus TDatetime

extrahieren von Zeit aus TDatetime

Ein Thema von robgoe · begonnen am 22. Aug 2016 · letzter Beitrag vom 22. Aug 2016
Antwort Antwort
robgoe

Registriert seit: 13. Feb 2015
13 Beiträge
 
#1

extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 07:08
Datenbank: Access • Version: 2013 • Zugriff über: dbGo
Hallo zusammen,
ich versuche schon seit geraumer Zeit über eine ADOQuery.Sql aus einem DateTimefeld einer Accesstabelle
nur anhand der Uhrzeit eine TDBGrid zu filtern.

Meine Feld "TStart" trägt den Inhalt

25.06.2016 08:05:00
25.06.2016 09:10:00
26.06.2016 07:58:00

Über eine ADOQuery versuche ich sowas wie:

ADOQuery.sql.text := select * from t_Arbeit where ZeitausFeld(TStart) <= 08:10

Jetzt sollten also nur 2 Datensätze angezeigt werden.

Ich habe schon Convert oder Cast probiert. Beides will mein System aber irgendwie nicht.

Mache ich es über Hour(TStart) oder Minute(TStart) kommt nicht das gewünschte Ergebnis.

Vielen Dank, wenn einer eine Lösung parat hat.


Windows 7; Delphi 10 Seattle; Access 2013;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.326 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 07:18
Geht es vielleicht so?
Code:
select * from t_Arbeit where TimeValue(TStart) <= TimeValue('08:10')
// alternativ bekommst du den Uhrzeitanteil auch so:
TStart - Int(TStart)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 07:22
Beim MS-SQL-Server funktioniert das so:
Code:
select *
  from t_Arbeit
 WHERE Convert(TIME, TStart) <= '08:10'
Peter
  Mit Zitat antworten Zitat
robgoe

Registriert seit: 13. Feb 2015
13 Beiträge
 
#4

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 08:20
Danke für die schnellen Antworten
aber,
bei:
ADOQuery1.SQL.Text := 'Select * from z_arbZeit where TimeValue(TStart) <= TimeValue(08:10:00)';

kommt Fehlermeldung: Ein Parameterobjekt ist nicht ordnungsgemäß definiert. Inkonsistente oder unvollständige Informationen wurden angegeben.
Wenn ich die Zeit in '' schreibe kommt Falscher Datentyp.

bei:
ADOQuery1.SQL.Text := 'Select * from z_arbZeit where Convert(Time,TStart) <= ''08:10:00''';
kommt Fehlermeldung: Undefinierte Funktion 'Convert' in Ausdruck.



Gruß
R.Götz
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 09:08
Probiere mal folgendes:
Delphi-Quellcode:
ADOQuery1.SQL.Text := 'Select * from z_arbZeit where TimeValue(TStart) <= TimeValue(:Zeit)';
ADOQuery1.ParamByName('Zeit').AsString := '08:10:00';
Peter
  Mit Zitat antworten Zitat
robgoe

Registriert seit: 13. Feb 2015
13 Beiträge
 
#6

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 09:20
Das mag auch nicht.
Werde mal mit dem timeValue und den Parametern weiter probieren.

Gruß
R.Götz

Geändert von robgoe (22. Aug 2016 um 10:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 10:28
Access ist ja ein wenig eigenwillig, was die SQL-Syntax angeht,
versuch es mal mit so etwas where Datum>#1/1/2016# Aus der Access-Hilfe:
Zitat:

Konvertiert Text in einen Datum/Uhrzeit-Wert, konvertiert aber nicht den Datumsteil.

TimeValue("11.01.2012 17:30")

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (22. Aug 2016 um 10:38 Uhr)
  Mit Zitat antworten Zitat
robgoe

Registriert seit: 13. Feb 2015
13 Beiträge
 
#8

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 13:36
Ich habe jetzt folgende Anweisung, welche zumindest ohne Fehler durchläuft.

ADOQuery1.SQL.Text := 'Select * from z_arbZeit where timeValue(:Zeit) = timeValue(:Zeit1)';

ADOQuery1.Parameters.ParamByName('Zeit').Value := DateTimeToStr(ADOQuery1.FieldByName('TStart').AsDa teTime);

-> Wenn ich FieldByName('TStart').ASString mache, kommt Fehlermeldung mit "Datentypen im Kriterienausdruck unverträglich".
Darum den Umweg über DateTimeToStr('....

ADOQuery1.Parameters.ParamByName('Zeit1').Value := '07:30:00';
ADOQuery1.Prepared := True;
ADOQuery1.active := True;

showmessage(IntToStr(ADOQuery1.RecordCount)) --> 0 Datensätze
Diese Uhrzeit gibt es aber.
was stimmt jetzt noch nicht.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.288 Beiträge
 
Delphi 12 Athens
 
#9

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 14:04
Hallöle...
Zitat:
ADOQuery1.Parameters.ParamByName('Zeit1').Value := '07:30:00';
...vergiß nicht die Millisekunden. Bei Zeitvergleichen ist "=" im SQL schlecht. Besser "between" ...

Geändert von haentschman (22. Aug 2016 um 14:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: extrahieren von Zeit aus TDatetime

  Alt 22. Aug 2016, 14:45
Ich habe jetzt folgende Anweisung, welche zumindest ohne Fehler durchläuft.
Delphi-Quellcode:
ADOQuery1.SQL.Text := 'Select * from z_arbZeit where timeValue(:Zeit) = timeValue(:Zeit1)';

ADOQuery1.Parameters.ParamByName('Zeit').Value := DateTimeToStr(ADOQuery1.FieldByName('TStart').AsDateTime);
-> Wenn ich FieldByName('TStart').ASString mache, kommt Fehlermeldung mit "Datentypen im Kriterienausdruck unverträglich".
Darum den Umweg über DateTimeToStr('....
könnte es sein, das da etwas nicht stimmt?
a) Deine Abfrage liefert immer dann einen oder mehrere Werte zurück wenn die Parameter Zeit und Zeit1 den gleichen Inhalt haben. Unabhängig davon welche Daten in der DB vorhanden sind!
b) TimeValue erwartet als Parameter einen String, wenn Du versuchst ein DateTime-Format zu übergeben, wundern mich Fehlermeldungen nicht.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:08 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