Sql server 存储过程正在返回假值

Sql server 存储过程正在返回假值,sql-server,stored-procedures,Sql Server,Stored Procedures,我编写了一个存储过程,用于从列中获取计数,但当我执行该过程时,它将返回一个日期值。而单独的查询执行将返回所需的结果集 ALTER PROCEDURE [dbo].[USP_ViewAdminDashBoard](@LoginUser varchar(75)) AS BEGIN DECLARE @LastLoginDate as DateTime Select @LastLoginDate = dbo.UDF_GetLastLoginByUser(@LoginUse

我编写了一个存储过程,用于从列中获取计数,但当我执行该过程时,它将返回一个日期值。而单独的查询执行将返回所需的结果集

ALTER PROCEDURE [dbo].[USP_ViewAdminDashBoard](@LoginUser varchar(75)) 
AS 
BEGIN 

    DECLARE @LastLoginDate  as DateTime 

    Select  @LastLoginDate = dbo.UDF_GetLastLoginByUser(@LoginUser);

    Select  'Last Login Date', @LastLoginDate 
    Union
    Select  'No. Active Business Associates' as Title, COUNT(isActive) Total 
    from    (select 1)d(isActive)
    where   isActive = 1 
  Union Select 'New Registration Today' as Title, COUNT(1) Total from dbo.TBL_iREGFORM     where isActive = 1 And GETDATE()>= RegDate
 Union Select 'Registration Pending for Verification' as Title, COUNT(1) Total from dbo.TBL_iREGFORM where isActive = 1 and isVerified = 1
END

您正在将日期时间
@lastloginandate
与整数
COUNT(isActive)
进行并集

这会导致您正在经历的隐式转换。要在同一查询中返回这些值,您需要将它们转换为公共数据类型,可能是varchar。或者,您可以使用两个不同的查询


如果您选择继续使用union,请确保改用union ALL。阅读更多信息。

你能提供你的实际查询吗?如果看不到查询,没有人能告诉你多少。很抱歉格式化…谢谢你的帮助,朋友。我需要在每个选择查询中键入cast。或者使用两个不同的选择。是的,你看到的日期值是作为日期转换的计数中的整数。(int)0=(日期时间)1900-01-00