Mysql 从字符串转换日期和/或时间时转换失败
我有一个设计如下的表列Mysql 从字符串转换日期和/或时间时转换失败,mysql,sql,sql-server-2008,Mysql,Sql,Sql Server 2008,我有一个设计如下的表列 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[client_Presence] ( [ClientID] [varchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Z923FormPath] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[client_Presence]
(
[ClientID] [varchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Z923FormPath] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
现在,我正试图更新上表,如下所示
UPDATE client_Presence
SET Z923FormPath = 'c:\windows\Z923Form.pdf'
FROM Client_Presence
WHERE ClientID = '12345'
我可以更新空值,“”值,getdate(),为什么我不能用字符串值更新
通过以上操作,我收到了以下错误,您能帮我一下吗
Procedure: Tr_client_Presence (Line: 19)
Line 19: Conversion failed when converting date and/or time from character string.
如果您能够将值更新为getDate(),并且更新为非空字符串,则会出现错误,看起来您错误地将列的数据类型设置为日期。您确定发布的代码片段是正确的吗?我非常确定。我检查了1000次。在更新时,表上有一个名为
Tr\u client\u Presence
的触发器触发。请检查一下。错误发生在那里(第19行)。另外,您已经标记了问题mysql
和sql-server-2008
。答案是,列序列在client_presence和client_presence_日志表之间不匹配,DBA必须纠正它。列序列不是应该相关的。如果是的话,那就是糟糕的查询设计。我猜您有类似于INSERT-INTO-log\u-table选择*FROM-table
。您应该更改触发器以在INSERT
和SELECT
部分中包含列名。应该类似于INSERT INTO log_table(colA,colB)选择colA,colB FROM table