Pra*_*oni 4 sql-server delphi datetime date delphi-7
我的区域日期设置设置为
yyyymmdd
Run Code Online (Sandbox Code Playgroud)
现在,我的SQL Server的默认DateTime设置为
mm/dd/yyyy
Run Code Online (Sandbox Code Playgroud)
我的数据库列的数据类型为DateTime,并且它包含的值与数据库的格式相同.
我的代码是用Delphi7编写的.
当它从数据库中取出记录时,会触发如下所示的查询:
select *
from EMPLOYEE
where JOINING_DATE > '08292017'
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,预期日期是08/29/2017或08-29-2017.
在Delphi 7中,我使用GetLocaleChar方法从区域设置中获取分隔符的值; 下面是这个代码:
GetLocaleChar(DefaultLCID, LOCALE_SDATE, '/')
Run Code Online (Sandbox Code Playgroud)
哪里
DefaultLCID := GetThreadLocale;
Run Code Online (Sandbox Code Playgroud)
另一个问题:在SQL Server中,我们使用哪个分隔符而不管数据库列中使用的分隔符是否重要?
我的数据库字段的数据类型为 - DateTime,它包含的值与数据库的格式相同.
SQL Server中的日期时间值采用二进制格式.mm/dd/yyyy日期时间值的字符串值完全由应用程序表示层控制.
当它从数据库中取出记录时,会触发如下所示的查询:从EMPLOYEE中选择*,其中JOINING_DATE>'08292017'
我建议您只是参数化查询而不是传递日期文字字符串.这将避免日期格式字符串问题,并提供性能和安全性等其他好处.
如果必须将日期或日期时间文本传递给SQL Server,请使用未分离的YYYYMMDD格式,以便无论SQL会话DATEFORMAT设置如何都能正确解释.