客户有个要求是,每个项目要有开始时间和结束时间,在这个范围内,才能够报销费用。所以在PROJECT 表中需要批量导入数据到PROJECT_BEGIN_DATE,PROJECT_END_DATE字段中。
如下图是客户给出的EXCEL表。
首先是整理Excel表,如下图所示。
在Excel表的D2处可以写这样的函数 =("INSERT into temp_time VALUES (N'"&A2&"', CAST('"&B2&"' AS DateTime), CAST('"&C2&"' AS DateTime));") ,然后往下拉,就可以批量形成insert语句,到这里不知道什么原因,日期值格式变成数值格式了。
后来我想了个办法,把 - 或 / 都替换成// ,如下所示。
将D列复制到记事本,再替换成/
然后是创建临时表TEMP_TIME存放代码,开始时间,结束时间。TEMP_TIME 与PROJECT 有共同的字段code,这样就可以更新数据到PROJECT表
--创建临时表
CREATE TABLE TEMP_TIME(
code nvarchar(50) null,
begintime datetime null,
endtime datetime null
)
执行上面的insert语句
然后将TEMP_TIME表更新到PROJECT表,语句如下。
UPDATE PROJECT SET PROJECT_BEGIN_TIME = TEMP_TIME.BEGINTIME, PROJECT_END_TIME = TEMP_TIME.ENDTIME FROM PROJECT
INNER JOIN TEMP_TIME ON PROJECT_CODE = TEMP_TIME.CODE