sql >> Databáze >  >> RDS >> Mysql

Problém se čtením data Delphi SQL

Obecně platí, že hodnoty TDateTime nepovažujte za řetězce, ale za data a časy.

Nezískejte hodnotu pole Date/Time pomocí metody AsString, použijte metodu AsDateTime a přiřaďte ji proměnné TDateTime.

Pokud chcete znát části data, použijte k tomu poskytnuté funkce. Například ty dostupné v DateUtils jednotka. SysUtils jednotka také obsahuje některé funkce související s datem/časem.

uses
  DateUtils, SysUtils;

var
  MyDate: TDateTime;
  MyDay, MyMonth, MyYear: Word;
begin
  MyDate := MyQuery.Fields[3].AsDateTime;  //not AsString
  MyDay := DayOf(MyDate);
  MyMonth := MonthOf(MyDate);
  MyYear := YearOf(MyDate);
  ShowMessage(Format('Day: %d, Month: %d, Year: %d', [MyDay, MyMonth, MyYear]);

  //or also
  MyDate := EndOfTheMonth(MyDate);
  DecodeDate(MyDate, MyYear, MyMonth, MyDay);
  ShowMessage(Format('Day: %d, Month: %d, Year: %d', [MyDay, MyMonth, MyYear]);

Totéž platí pro ukládání hodnot do databáze, místo použití pevného formátu data použijte parametry, jako je tento:

uses
  DateUtils, SysUtils;

var
  MyDate: TDateTime;
  MyDay, MyMonth, MyYear: Word;
begin
  MyDate := EncodeDate(2013, 2, 17);
  MyQuery.SQL.Text := 'insert into myTable (MyDate) values (:MyDate)';
  MyQuery.Params.ParamByName('MyDate').AsDateTime := MyDate;
  MyQuery.ExecSQL();

Funguje se všemi dostupnými vrstvami pro přístup k databázi, o kterých vím.



  1. Jaké jsou způsoby vkládání a načítání dat BLOB z databáze Oracle pomocí SQL?

  2. Dotaz Oracle PL/SQL se nezkompiluje

  3. Podmíněné pořadí T-SQL podle

  4. Při dotazu došlo ke ztrátě připojení k serveru MySQL