Moin zusammen,
unter
MSSQL 2005 habe ich nur mit DateTime und SmallDateTime gearbeitet. Mit
MSSQL 2008 kam nun das "Date" Feld hinzu, was ja nur den Datumsteil enthält. Diesen möchte ich gerne benutzen.
Werte in die
DB bekommen ich wie folgt hin. Musste aber beim Format tricksen.
DB Struktur und Beispieldaten
Code:
[customer_requested_start_date] [date] NULL
Inhalt: 2013-05-03
Delphi-Quellcode:
function Tfrm_request.ConvertToSQLDate(fieldValue : String) : Variant;
begin
try
if (fieldValue = ' . . ') or (fieldValue = '') then
Result := Null
else
Result := FormatDateTime('yyyy-mm-dd', StrToDate(fieldValue, frm_main.AppFormatSettings));
except
Result := Null;
end;
end;
// Variant anstatt TDateTime um NULL zu setzen
DSData.FieldByName('customer_requested_start_date').AsVariant := ConvertToSQLDate(medt_customer_requested_start.Text);
Um die Werte auszulesen, wollte ich folgendes verwenden.
Delphi-Quellcode:
var
customer_requested_start_date : TDateTime;
if DSData.FieldByName('customer_requested_start_date').IsNull then
customer_requested_start_date := 0
else
customer_requested_start_date := DSData.FieldByName('customer_requested_start_date').AsDateTime;
Bei der Zuweisung sagt er immer 2013-05-30 sein keine gültige Datums- und Uhrzeitangabe.
Ich könnte den Datentyp in der
SQL DB wieder auf SmallDateTime ändern aber das wäre die letzte Option. Die Daten aus der
DB werden in anderen Anwendungen weiter verarbeitet und da wäre es besser nur den Datumsanteil zu haben. Denn sonst ist Zeit immer 00:00:00. Was ich persönlich nicht so toll finde.
Danke im Voraus an alle Tipps und Ansätze.
Sven