在存储过程中将 NVarchar 数据类型转换为日期时间数据类型

本文关键字:类型转换 日期 时间 数据类型 数据 NVarchar 存储 存储过程 过程中 | 更新日期: 2023-09-27 18:37:16

当我将开始日期的日期和结束日期(字符串值从文本框传递到 sql)时,我收到错误。

alter procedure [dbo].[sp_insert_ProjectDetail]    
(@projectname varchar(max),    
@projectnos varchar(20),    
@Task_assigned varchar(max),  
@Startdate varchar(30),    
@enddate varchar(30),    
@status varchar(20),  
@analyst varchar(max),    
@qualitycheck varchar(max) 
)as    
declare @value as varchar(20)    
INSERT INTO tbl_ProjectDetails(ProjectName,ProjectNos,Task_assigned,Startdate,enddate,Analyst,Qualitycheck,flag,Status_Name)VALUES (@projectname,@projectnos,@Task_assigned,@Startdate,@enddate,@analyst,@qualitycheck,0,@status)    

在存储过程中将 NVarchar 数据类型转换为日期时间数据类型

我收到错误

顶部提示; 始终发布确切的错误消息,最好是创建该错误的样本输入值;我强烈怀疑你在1月13日问这个问题并非巧合;您可能需要检查昨天的数据是否未记录为 12 月 1 日(以及 11 月 1 日星期日等)。然而。。。继续前进...

@Startdate varchar(30),    
@enddate varchar(30), 

这里的基本诀窍是:不要那样做。当然,不要盲目地通过"按原样"对待它们来铸造这些价值观。推荐的方法是解析调用层的值,因此这些值可能变为:

@Startdate datetime,
@enddate datetime,

(或类似;还有其他日期/时间数据类型;它应该与表匹配),并担心调用代码中的格式:

var start = DateTime.Parse[Exact](startText, ...); // some expected format/culture/etc
...
cmd.Parameters.AddWithValue("Startdate", start);

(等)

相关文章: