Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem z odczytem daty w Delphi SQL

Zasadniczo nie traktuj wartości TDateTime jako ciągów, ale jako daty i godziny.

Nie pobieraj wartości pola Date/Time metodą AsString, użyj metody AsDateTime i przypisz ją do zmiennej TDateTime.

Jeśli chcesz poznać części dat, skorzystaj z udostępnionych funkcji, aby to zrobić. Na przykład te dostępne w DateUtils jednostka. SysUtils jednostka zawiera również pewne funkcje związane z Datą/Czasem.

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]);

To samo dotyczy przechowywania wartości w bazie danych, zamiast używania stałego formatu daty, użyj parametrów, takich jak:

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();

Działa ze wszystkimi znanymi mi warstwami dostępu do bazy danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pełne połączenie zewnętrzne na trzech stołach

  2. sudo mniam zainstaluj konflikt php55w-mysqlnd

  3. Wybierz wszystkie rekordy z jednej tabeli, które nie istnieją w innej tabeli w Laravel 5.1

  4. Najlepszy sposób na przechowywanie ustawień aplikacji PHP?

  5. Jak połączyć się z MySQL za pomocą Microsoft .NET