我在谷歌和SO上搜索了很久,但都没有找到可用的解决方法。我正在从SQL Server中的表中检索一个
如果我将查询检索到的值显示为字符串,则会得到:
捕获到的异常产生的失败信息会被记录,具体如下所示:
date
。我需要将其转换为Delphi中的DateTime
对象。问题似乎出现在从SQL中获取的值上。我测试的SQL Server版本是2012(不是R2)。如果我将查询检索到的值显示为字符串,则会得到:
myQuery.FieldByName('ActiveDate').AsString;
I get the value
2014-06-15
myQuery
是 TADOQuery 类型。
由于以下所有方法均失败,因此 DateTime 似乎不喜欢此格式:
myQuery.FieldByName('ActiveDate').AsDateTime;
StrToDateTime(myQuery.FieldByName('ActiveDate').AsString);
StrToDate(myQuery.FieldByName('ActiveDate').AsString);
捕获到的异常产生的失败信息会被记录,具体如下所示:
''2014-06-15'' is not a valid date and time
有没有不涉及复杂字符串操作,并且不受服务器区域设置影响的解决方案?
CONVERT()
将日期列转换为字符串,在这种情况下你别无选择,只能对其进行解析。最简单的解决方案是从 SQL 查询中删除CONVERT
,直接返回日期本身,然后在前端应用程序(比如 Delphi 应用)中可以按需使用它。 - Ken White