【问题标题】:SQL error: conversion failed when converting the varchar value '2020-11-26' to data type bitSQL 错误:将 varchar 值 '2020-11-26' 转换为数据类型位时转换失败
【发布时间】:2021-03-09 16:49:24
【问题描述】:

我有这个触发器 - 你能修复这段代码中的错误吗?

INSERT INTO trSMSPoolHeader (SMSGatewayServiceCode, IsSent, SendDate, CreatedDate,
                             LastUpdatedDate, CompanyCode, StoreTypeCode, MessageResponseID,
                             IsCommonMessageText, IsBusy, MessageReasonCode, SMSForCustomerRelationshipID, IsMail, MessageSubject)
    SELECT
        , IsSent = 0                     
        , SendDate = GETDATE()
        , CompanyCode = 1           
        , StoreTypeCode = 5         
        , MessageResponseID = N''                                                       
        , IsCommonMessageText = 0                     
        , IsBusy = 0                                    
        , MessageReasonCode = 4 
        , SMSForCustomerRelationshipID = N''
        , SMSGatewayServiceCode = N'AjansIletisim'
        , CreatedDate = GETDATE()
        , LastUpdatedDate = GETDATE()
        , IsMail = 0                               
        , MessageSubject = N'Kampanya' 
    FROM 
        #SendSms
    WHERE 
        PhoneNumberForSMS <> ''  
        AND DiscountOfferCode = N'Taahhüt-01'

SQL 错误:

将 varchar 值 '2020-11-26' 转换为数据类型位时转换失败

【问题讨论】:

  • 要回答您的问题,您应该添加具有数据类型的表结构并添加您的 DBMS 标签,尽管它可以被猜到。

标签: sql database triggers getdate


【解决方案1】:

此触发器尝试将日期时间类型值插入到类型为位的字段中。 从它们的名称来看,这很可能是这些字段: ,CreatedDate=GETDATE() ,LastUpdatedDate=GETDATE()

表格中的字段: 消息原因代码, SMSForCustomerRelationshipID

【讨论】:

    【解决方案2】:
    1. 插入语句中的列顺序应与 您的选择声明
    2. 要么将#SendSms 表中的值用于trSMSPoolHeader,要么使用硬编码值。现在您正在从临时表中选择但插入硬编码值,当然它可以工作,但它不是正确的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2021-04-26
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多