Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Masalah pembacaan Tanggal Delphi SQL

Sebagai aturan umum, jangan perlakukan nilai TDateTime sebagai string, tetapi sebagai tanggal dan waktu.

Jangan mendapatkan nilai bidang Tanggal/Waktu dengan metode AsString, gunakan metode AsDateTime dan tetapkan ke variabel TDateTime.

Jika Anda ingin mengetahui bagian tanggal, gunakan fungsi yang disediakan untuk melakukannya. Misalnya yang tersedia di DateUtils satuan. SysUtils unit juga berisi beberapa fungsi terkait Tanggal/Waktu.

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

Hal yang sama berlaku untuk menyimpan nilai ke database, daripada menggunakan format tanggal tetap, gunakan parameter, seperti ini:

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

Ia bekerja dengan semua lapisan akses basis data yang tersedia yang saya ketahui.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memasukkan file BLOB dan CLOB di MySQL?

  2. Masalah koneksi Ruby on Rails

  3. UPDATE Syntax dengan ORDER BY, LIMIT dan Multiple Tables

  4. Sintaks MYSQL tidak mengevaluasi tidak sama dengan di hadapan NULL

  5. Permintaan MYSQL untuk SUM dan DISTINCT?