Stored procedures 将存储过程执行结果中的DateTime2转换为DateTime

Stored procedures 将存储过程执行结果中的DateTime2转换为DateTime,stored-procedures,crystal-reports,datetime2,Stored Procedures,Crystal Reports,Datetime2,如何将存储过程执行结果中的DateTime2转换为DateTime?我有一个过程,它将执行一个动态形成的sql语句,该语句将有一个各种列的输出,其中有一些datetime2数据类型。如何将datetime2更改为datetime,因为我需要将此过程作为数据源分配给crystal report,但crystal report将datetime2转换为字符串,而字符串不能执行报告中所需的逻辑。所以我想让这个过程给出datetime,而不是datetime2 我想临时表可能会对我有所帮助,但不确定如何

如何将存储过程执行结果中的DateTime2转换为DateTime?我有一个过程,它将执行一个动态形成的sql语句,该语句将有一个各种列的输出,其中有一些datetime2数据类型。如何将datetime2更改为datetime,因为我需要将此过程作为数据源分配给crystal report,但crystal report将datetime2转换为字符串,而字符串不能执行报告中所需的逻辑。所以我想让这个过程给出datetime,而不是datetime2


我想临时表可能会对我有所帮助,但不确定如何继续。。请帮助..

假设DateTime2字段字符串与MS SQL/ISO 8601中的字段字符串类似(请参阅):“2007-05-02T19:58:47.1234567”,您可以拉出字符串的所需部分,然后使用
CDate
CDateTime
将其转换为日期或日期时间

If IsDate(left({Results.DT2Field}, 10))
    Then
    CDate(left({Results.DT2Field}, 10));
还是约会时间

If IsDateTime(left({Results.DT2Field}, 10) + " " + mid({Results.DT2Field},12,8))
    Then
    CDateTime(left({Results.DT2Field}, 10) + " " + mid({Results.DT2Field},12,8));

上面的结果是转换后的值。

日期类型没有格式。您发布的内容之所以有效,是因为该字段使用CR指定的格式隐式转换为字符串。更好的解决方案是从一开始就使用适当的格式化功能,例如
ToText
,如中所示