Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sự cố đọc Delphi SQL Date

Theo nguyên tắc chung, không coi các giá trị TDateTime là chuỗi mà là ngày và giờ.

Không nhận giá trị của trường Ngày / Giờ bằng phương thức AsString, hãy sử dụng phương thức AsDateTime và gán nó cho biến TDateTime.

Nếu bạn muốn biết các phần ngày tháng, hãy sử dụng các chức năng được cung cấp để làm điều đó. Ví dụ:những cái có sẵn trong DateUtils đơn vị. SysUtils đơn vị cũng chứa một số chức năng liên quan đến Ngày / Giờ.

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

Điều tương tự cũng áp dụng cho việc lưu trữ các giá trị vào cơ sở dữ liệu, thay vì sử dụng định dạng ngày cố định, hãy sử dụng các tham số như sau:

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

Nó hoạt động với tất cả các lớp truy cập cơ sở dữ liệu có sẵn mà tôi biết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa hàng:Không có thành viên nào có nhiều hơn x bản ghi

  2. Phân vùng MySQL:Tăng hiệu suất Đối với nhiều bảng được phân vùng. Tại sao?

  3. Tải hình ảnh vào C # và sau đó chèn vào bảng MySQL

  4. PDO Câu lệnh soạn sẵn Bên trong một lớp

  5. Cách cài đặt MySQL với phpMyAdmin trên Ubuntu 12.04