![]() |
Datenbank: Access • Version: 2013 • Zugriff über: dbGo
extrahieren von Zeit aus TDatetime
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; |
AW: extrahieren von Zeit aus TDatetime
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) |
AW: extrahieren von Zeit aus TDatetime
Beim MS-SQL-Server funktioniert das so:
Code:
select *
from t_Arbeit WHERE Convert(TIME, TStart) <= '08:10' |
AW: extrahieren von Zeit aus TDatetime
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 |
AW: extrahieren von Zeit aus TDatetime
Probiere mal folgendes:
Delphi-Quellcode:
ADOQuery1.SQL.Text := 'Select * from z_arbZeit where TimeValue(TStart) <= TimeValue(:Zeit)';
ADOQuery1.ParamByName('Zeit').AsString := '08:10:00'; |
AW: extrahieren von Zeit aus TDatetime
Das mag auch nicht.
Werde mal mit dem timeValue und den Parametern weiter probieren. Gruß R.Götz |
AW: extrahieren von Zeit aus TDatetime
Access ist ja ein wenig eigenwillig, was die SQL-Syntax angeht,
versuch es mal mit so etwas
SQL-Code:
Aus der Access-Hilfe:
where Datum>#1/1/2016#
Zitat:
Gruß K-H |
AW: extrahieren von Zeit aus TDatetime
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ß |
AW: extrahieren von Zeit aus TDatetime
Hallöle...:P
Zitat:
|
AW: extrahieren von Zeit aus TDatetime
Zitat:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 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 by Thomas Breitkreuz