将其保存在MySQL中时,将从日期时间中删除时间值

时间:2015-08-05 00:12:32

标签: mysql delphi stored-procedures ado delphi-xe6

我试图将日期时间值保存到MySQL数据库。

procedure TLocalDatabaseConnectionTests.TestSaveDateTime;
var
    StoredProc : TADOStoredProc;
    Connection : TADOConnection;
    dt : TDateTime;
begin
    StoredProc := TADOStoredProc.Create(nil);
    Connection := TADOConnection.Create(nil);
    try
        Connection.LoginPrompt := false;

        Connection.ConnectionString := String.Format
        (
            'DRIVER={%s}; SERVER=%s; DATABASE=%s; UID=%s; PASSWORD=%s;OPTION=3;',
            [
                'MySQL ODBC 3.51 Driver',
                'LOCALHOST',
                'DatabaseName',
                'Username',
                'Password'
            ]
        );

        StoredProc.Connection := Connection;
        StoredProc.ProcedureName := 'TestDate';

        StoredProc.Parameters.Clear;

        with StoredProc.Parameters.AddParameter do
        begin
            Name := String('@TheDate');
            DataType := TFieldType.ftDateTime;
            Direction := TParameterDirection.pdInput;
        end;

        dt := EncodeDateTime(1995, 12, 13, 13, 30, 1, 1);
        StoredProc.Parameters.ParamByName('@TheDate').DataType := TDataType.ftDateTime;
        StoredProc.Parameters.ParamByName('@TheDate').Value := TDateTime(dt);

        StoredProc.ExecProc;

    finally
        FreeAndNil(Connection);
        FreeAndNil(StoredProc);
    end;
end;

这是存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `TestDate`(TheDate DateTime)
BEGIN
    INSERT INTO new_table (idnew_table)
    VALUES (TheDate);
END

问题是时间总是被切断。

date

我无法解释为什么这是

schema

该列确实定义为DateTime而非Date

0 个答案:

没有答案