【问题标题】:Error: INT is incompatible with DATE while passing date argument错误:INT 在传递日期参数时与 DATE 不兼容
【发布时间】:2017-08-28 06:09:44
【问题描述】:

将日期作为参数传递给存储过程时出现以下错误

操作数类型冲突:INT 与 DATE 不兼容

尝试使用 2017-04-03 和 '2017-04-03'。仍然无法正常工作

示例: 执行 > 20160403

过程定义为:


@stlddate 日期 ... ...

请帮忙解决。

【问题讨论】:

  • 如果您将字符串直接插入到查询中,则符合 SQL 的语法为 DATE '2017-04-03'。但我强烈建议您使用您所使用的语言中可用的任何准备好的语句 API。

标签: sql sql-server


【解决方案1】:

获取存储过程参数为INT,然后转换为日期数据类型:

 DECLARE @date INT;
 SET @date = 20170403    
 SELECT CONVERT(varchar(20), CONVERT(date, CONVERT(varchar(8), @date),  
 112),110)as datetime

【讨论】:

    【解决方案2】:

    问题是20160403 看起来像一个整数。你可以试试:

    '2016-04-03'
    

    cast('20160403' as date)
    

    如果没有更多信息,我自己无法检查。

    【讨论】:

    • 我已经在程序中定义了日期值是 INT 并且它有效。谢谢。
    猜你喜欢
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    相关资源
    最近更新 更多