Mysql
 sql >> база данни >  >> RDS >> Mysql

Проблем с четене на дата на Delphi SQL

Като общо правило, не третирайте стойностите на TDateTime като низове, а като дати и часове.

Не получавайте стойността на поле за дата/час с метода AsString, използвайте метода AsDateTime и го присвоете на променлива TDateTime.

Ако искате да знаете частите от датата, използвайте предоставените функции, за да го направите. Например наличните в DateUtils мерна единица. SysUtils модулът също така съдържа някои функции, свързани с дата/час.

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

Същото важи и за съхраняване на стойности в базата данни, вместо да използвате фиксиран формат на дата, използвайте параметри като това:

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

Работи с всички налични слоеве за достъп до бази данни, за които знам.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате ISO8601 във формат на дата в php

  2. Нарушение на php ограничение Грешка 1452

  3. MySql Как да използвам DATE_SUB в клауза Between

  4. PDO::fetch() ОГРАНИЧЕНИЕ 1

  5. mysql заявката понякога не връща нищо