我在查询分析器里:输入
select DATEADD(s,1196660520,'1970-01-01 00:00:00') 能够查询出正确的结果 但是具体设计到字段时 就报错:
select DATEADD(s,regtime,'1970-01-01 00:00:00') from fs_me_users服务器: 消息 8116,级别 16,状态 1,行 1
函数 dateadd 的参数 2 的数据类型 nvarchar 无效。1196660520就是字段regtime的值呀 怎么报错呀?

解决方案 »

  1.   

    DATEADD第2个参数需要用具体的值  而不是字段名
      

  2.   

    DATEADD
    在向指定日期加上一段时间的基础上,返回新的 datetime 值。语法
    DATEADD ( datepart , number, date ) 参数
    datepart是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。日期部分 缩写 
    Year yy, yyyy 
    quarter qq, q 
    Month mm, m 
    dayofyear dy, y 
    Day dd, d 
    Week wk, ww 
    Hour hh 
    minute mi, n 
    second ss, s 
    millisecond ms 
    number是用来增加 datepart 的值。如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 datepart 指定 day,为 number 指定 1.75,则 date 将增加 1。date是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。有关指定日期的更多信息,请参见 datetime 和 smalldatetime。 如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
      

  3.   

    select DATEADD(s,cast(regtime as int),'1970-01-01 00:00:00') from fs_me_users
      

  4.   

    注意:
    1.INT型的最大值为:2147483647,字段中的值如果有超过这个值的,用BIGINT。
    2.字段中必须是可转换为INT型的数据,如果有小数,也不能直接转换,需要先转为FLOAT,再转为INT。