SQL数据表批量插入日期值(datetime类型)

为满足客户项目报销需求,需要在PROJECT表中批量导入开始时间(PROJECT_BEGIN_DATE)和结束时间(PROJECT_END_DATE)。通过整理Excel表并使用公式生成批量INSERT语句,但在处理日期格式时遇到问题。解决方法是用函数转换日期格式,并在记事本中替换特殊字符。创建临时表TEMP_TIME,通过共享字段更新PROJECT表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户有个要求是,每个项目要有开始时间和结束时间,在这个范围内,才能够报销费用。所以在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值