Pro*_*ind 3 delphi datetime sql-server-2008-r2
我试图将日期发布到SQL Server 2008 R2数据库中的dateTime列,但我遇到了许多问题,我不知道是什么原因.
首先,我使用此代码,但我收到错误:无法将字符串转换为日期.
ADOOF.SQL.Text:='UPDATE OFTab SET CA='''+ CA.Text + ''', demandeClient=''' + DateTimeToStr(demandeClient.DateTime) + ''' WHERE ID='''+ ADOOF.FieldByName('ID') + '''';
ADOOF.ExecSQL;
Run Code Online (Sandbox Code Playgroud)
其次,我使用了参数:
ADOOF.SQL.Text:='UPDATE OFTab SET CA='''+ CA.Text + ''', demandeClient=:demande_client WHERE ID='''+ ADOOF.FieldByName('ID') + '''';
ADOOF.Parameters.ParamByName('demande_client').Value:= demandeClient.Date;
ADOOF.ExecSQL;
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误:找不到参数(demande_client).
我搜索了这个问题,我发现Embarcadero提出了一个建议,即在调用ADOQuery之前可以创建参数:
ADOOF.SQL.Text:='UPDATE OFTab SET CA='''+ CA.Text + ''', demandeClient=:demande_client WHERE ID='''+ ADOOF.FieldByName('ID') + '''';
ADOOF.Parameters.ParseSQL(ADOOF.SQL.Text, True);
ADOOF.Parameters.ParamByName('demande_client').Value:= demandeClient.Date;
ADOOF.ExecSQL;
Run Code Online (Sandbox Code Playgroud)
我删除了连接Persist Security Info,但总是遇到同样的问题.请,任何建议.
信息:我正在使用MICROSOFT OLE DB Provider for SQL Server.
在你的第一个例子中使用
FormatDateTime('YYYYMMDD hhmmss',demandeClient.DateTime)
Run Code Online (Sandbox Code Playgroud)
代替
DateTimeToStr(demandeClient.DateTime)
Run Code Online (Sandbox Code Playgroud)
这是因为没有formatsettings的DateTimeToStr使用您的本地化机器设置,而您的数据库可能或可能不喜欢该格式.使用FormatDateTime也消除了歧义:考虑到01/02/03,对于世界上的一些人来说,这是2003年1月2日,但对于其他人来说,2003年是februari,甚至有些人会说2001年,februari第3.YYYYMMDD是通用的.20030201始终是2003年2月的第1名.
| 归档时间: |
|
| 查看次数: |
4650 次 |
| 最近记录: |