sql-server - "Error converting data type varchar to datetime"

标签 sql-server

如何解决以下过程中的错误?

CREATE PROCEDURE cards
    @salesman VARCHAR(10),
    @RCV10 INT,
    @RCV09 INT,
    @RCV15 INT,
    @GPRS15 INT,
    @RCV20 INT,
    @RCV25FTT INT,
    @RCV25 INT,
    @RCV31 INT,
    @RCV30 INT,
    @RCV35 INT,
    @RCV50 INT,
    @RCV55 INT,
    @SIM INT,
    @VTOPSIM INT,
    @VTOPBAL INT,
    @THREEGSIM INT,
    @entrydate DATETIME
AS
BEGIN
    IF EXISTS(
           SELECT *
           FROM   CardsIssued
           WHERE  salesman = @salesman
                  AND RCV10 > @RCV10
                  AND RCV09 > @RCV09
                  AND RCV15 > @RCV15
                  AND GPRS15 > @GPRS15
                  AND RCV20 > @RCV20
                  AND RCV25FTT > @RCV25FTT
                  AND RCV25 > @RCV25
                  AND RCV31 > @RCV31
                  AND RCV30 > @RCV30
                  AND RCV35 > @RCV35
                  AND RCV50 > @RCV50
                  AND RCV55 > @RCV55
                  AND SIM > @SIM
                  AND VtopSim > @VTOPSIM
                  AND VtopBal > @VTOPBAL
                  AND ThreeGSim > @THREEGSIM
                  AND EntryDate = @entrydate
       )
    BEGIN
        INSERT Cards_Returned
        VALUES
          (
            @salesman,
            @RCV10,
            @RCV09,
            @RCV15,
            @GPRS15,
            @RCV20,
            @RCV25FTT,
            @RCV25,
            @RCV31,
            @RCV30,
            @RCV35,
            @RCV50,
            @RCV55,
            @SIM,
            @VTOPSIM,
            @VTOPBAL,
            @THREEGSIM,
            @EntryDate
          )
    END
    ELSE
        PRINT'CARDS RETURNED CANNOT BE GREATER THAN CARDS ISSUED'
END

运行方式:

execute cards 'S001',50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,'28/1/2013'

出现以下错误:

Msg 8114, Level 16, State 5, Procedure cards, Line 0
Error converting data type varchar to datetime

最佳答案

'28/1/2013' 是一种不明确的格式 - SQL Server 可能会将其解释为 dd/mm/yyyymm/dd/yyyy 。在本例中,它完成了后者,并且不知道一年中的第 28 个月是多少。

改用'20130128'。这总是被解释为yyyymmdd

关于sql-server - "Error converting data type varchar to datetime",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14624649/

相关文章:

c# - C#中的SQL从数据库中选择

sql-server - 在 Visual Studio 中使用 Linq 查询链接服务器

c# - Entity Framework 中的查询比直接sql花费的时间更长

c# - 用于构建 OCA 的工具(偶尔连接的应用程序)

sql - 在这个demo中,我应该在每一列上创建一个索引还是只创建一个非聚集索引(Index Scan、Seek)

sql-server - Entity Framework 中缺少枚举列

sql-server - SSIS Merge Join 的结果

sql-server - 远程调用 Entity Framework 中的存储过程时服务器无响应

sql-server - Solaris 10 上的 Oracle ODBC 驱动程序

sql - 加入破坏了选择