【问题标题】:Disallowed implicit conversion from data type datetime to data type int--不允许从数据类型 datetime 隐式转换为数据类型 int--
【发布时间】:2015-09-08 20:13:09
【问题描述】:
DECLARE @minusDate   DATETIME 
DECLARE @unixTimeConst  INTEGER 
DECLARE @unixBeginDate  DATETIME

SELECT 
    @counterWS =  COUNT(*) 
FROM  
    wmservice_min_max 
WHERE    
    @unixBeginDate + LASTTIME / @unixTimeConst  < @minusDate

LASTTIME 是日期时间类型的列。

我收到以下错误:

不允许从数据类型 datetime 到数据类型 int、表“wmservice_min_max”、列“LASTTIME”的隐式转换。使用 CONVERT 函数运行此查询。

【问题讨论】:

  • LASTTIME / @unixTimeConst 为什么要将日期除以整数?
  • 使用 DateAdd 和其他指定用于日期操作的函数。或使用 DateDiff 将日期转换为特定日期的秒数。然后你就可以对它们进行数学运算了。

标签: sql-server datetime


【解决方案1】:

你可以像这样修改查询,但从逻辑上我怀疑你期望得到什么作为输出。

            DECLARE @minusDate   DATETIME 
            DECLARE @unixTimeConst  INTEGER 
            DECLARE @unixBeginDate  DATETIME
            DECLARE @counterWS INT

            SELECT 
                @counterWS =  COUNT(*) 
            FROM  
               #TEMP
            WHERE    
                CAST((@unixBeginDate + LASTTIME) AS INT) / @unixTimeConst  < @minusDate

【讨论】:

  • WC :)。你能把它标记为正确答案吗?
猜你喜欢
  • 2014-06-17
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2017-08-27
  • 1970-01-01
  • 2015-09-26
相关资源
最近更新 更多