合并表中的转换失败

时间:2018-12-23 07:56:25

标签: sql sql-server

我有两个TABLES

  1. SOURCE_TABLE
  2. TARGET_TABLE

我想更新旧记录并将新记录插入TARGET_TABLE的{​​{1}}中,并且我使用SOURCE_TABLE进行此操作。

注意:我在MERGE中有一个nvarchar数据类型的日期值,在SOURCE_TABLE中有一个datatime2数据类型的日期值。

现在如何解决此错误:

  

从字符串转换日期和/或时间时转换失败

这是我的代码:

TARGET_TABLE

2 个答案:

答案 0 :(得分:0)

为什么要将日期/时间存储为字符串?这是错误的格式。

您可以使用# 0 changes to 1 when players are joining the game speler_een = 0 speler_twee = 0 speler_drie = 0 speler_vier = 0 # This function makes an inventory of how many players are involved class HoeveelSpelers: def verkrijg_aantal_spelers(spelers_totaal): hoeveelSpelers = int(input('Hoeveel spelers spelen er mee? (1-4) ')) while (hoeveelSpelers > 4 or hoeveelSpelers < 1): print('Dit is niet een geldige hoeveelheid spelers. Probeer het opnieuw. ') hoeveelSpelers = int(input('Hoeveel spelers spelen er mee? (1-4) ')) return hoeveelSpelers h = HoeveelSpelers() spelers_totaal = h.verkrijg_aantal_spelers() if (spelers_totaal == 4): speler_een = 1 speler_twee = 1 speler_drie = 1 speler_vier = 1 elif (spelers_totaal == 3): speler_een = 1 speler_twee = 1 speler_drie = 1 elif (spelers_totaal == 2): speler_een = 1 speler_twee = 1 elif (spelers_totaal == 1): speler_een = 1 print(speler_een, speler_twee, speler_drie, speler_vier) main() 进行转换:

try_convert()

但是,当它们不匹配时,它将返回VALUES (source.Name, source.Family, source.Priority, TRY_CONVERT(DATETIME, source.CreationDate, 101) )

您可能还会发现省略格式会给您带来更好的运气:

NULL

SQL Server在将字符串转换为日期/时间方面非常复杂。

更重要的是,您应该查找失败的数据并修复数据-最好将列更改为正确的类型:

VALUES (source.Name, source.Family, source.Priority, 
        TRY_CONVERT(DATETIME, source.CreationDate)
       )

答案 1 :(得分:-1)

-首先,我需要知道为什么将date列定义为nvarchar?

将列数据转换为datatime2不会得到错误。

-用于实例:

  select convert(datetime2,convert(nvarchar(250),getdate()))

  select convert(datetime2,getdate())

-只需替换下面的代码即可

  convert(datetime2,source.CreationDate)

希望有帮助