sql >> データベース >  >> RDS >> Mysql

DelphiSQLの日付読み取りの問題

    原則として、TDateTime値を文字列としてではなく、日付と時刻として扱います。

    AsStringメソッドでDate/Timeフィールドの値を取得せず、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. utf8_unicode_cs照合は存在しますか?

    2. テーブルを変更して UNIQUE キーを追加するとエラーが発生する

    3. 別のボタンをクリックしてボタンが生成されたときに、ボタンクリック時にdivを更新する

    4. 3つ以上のテーブルからデータをフェッチする方法は?