【发布时间】:2017-04-26 09:31:36
【问题描述】:
我有一个简单的存储过程来返回日期时间。例如:
create procedure sp_get_date (@db_date datetime output)as begin select @db_date ='2017-04-26 13:20:32.313' end
并使用 SQLNCLI11 本地客户端与 PowerBuilder 应用程序内的数据库一起工作。
DECLARE get_date_proc PROCEDURE for dbo.sp_get_date @db_date = :dt_today output using sqlca;
EXECUTE get_date_proc;
FETCH get_date_proc INTO :dt_today;
t_now = time(dt_today)
t_now 的预期结果是“13:20:32.313000”
使用 SQL server 2014 时,t_now 值正确,为 13:20:32。313000
但使用 SQL Server 2016,该值为 13:20:3133333
这是本机客户端库与 SQL Server 2016 一起使用的问题吗?存储过程是否返回datatime2值?
非常感谢。
【问题讨论】:
-
见 DanGuzman 评论
-
是的,我可以换到120级。但还是不明白根本原因。上述存储过程是否在 SQL Server 2016 中返回 DATETIME2 值而不是 DATETIME?
-
您一定是数据类型不匹配,导致精度更高
-
我不确定 powerbuilder,但原因很清楚,有些地方您/应用程序正在从 datetime 转换为 datetime2