1

我正在使用 SQL Server 2008 R2,并且我选择了使用“将数据作为脚本”->“使用列名插入”将表中的数据导出到 SQL INSERT 脚本的选项。这导致了类似于以下的脚本:

INSERT INTO [MyTable] ([Id],[InsertDateTime],[Firstname],[Email]) VALUES (1, '26/06/2012 2:02:25 p.m.', 'Robert', 'robert@test.com');
INSERT INTO [MyTable] ([Id],[InsertDateTime],[Firstname],[Email]) VALUES (2, '28/06/2012 4:17:21 a.m.', 'David', 'david@test.com');

如果我立即尝试在表的空版本上运行这个生成的脚本,我会收到以下错误:

Conversion failed when converting date and/or time from character string.

2个问题:

  1. 日期/时间字符串的格式为“dd/mm/yyyy h:mm:ss”。如何告诉 SQL Server 我想要转换日期/时间的字符串表示形式的特定格式?该脚本生成大约 5000 行 INSERT 行,因此我可以在合理的地方进行查找和替换...
  2. 为什么 SQL Server 甚至会生成一个它无法运行的脚本?

谢谢!

4

1 回答 1

0

首先使用set dateformat设置正确的日期部分顺序。在你的情况下“dmy”。然后将所有语句中的所有“am”替换为“AM”,将“pm”替换为“PM”。以下脚本工作正常:

 set dateformat dmy

 INSERT INTO [MyTable] ([Id],[InsertDateTime],[Firstname],[Email]) 
   VALUES (1, '26/06/2012 2:02:25 PM', 'Robert', 'robert@test.com');
 INSERT INTO [MyTable] ([Id],[InsertDateTime],[Firstname],[Email]) 
     VALUES (2, '28/06/2012 4:17:21 AM', 'David', 'david@test.com');
于 2012-08-20T09:17:16.783 回答