Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用存储过程更新表时出错_C#_.net - Fatal编程技术网

C# 使用存储过程更新表时出错

C# 使用存储过程更新表时出错,c#,.net,C#,.net,在此存储过程中发生错误。即“format”不是可识别的内置函数名 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[attendance_updatebyemployee_id] @Employee_id int, @AtDate datetime, @FNLogged bit, @ANLogged bit, @LogTime varchar(10), @LogOuttime varchar(10) AS

在此存储过程中发生错误。即“format”不是可识别的内置函数名

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[attendance_updatebyemployee_id]
@Employee_id int,
@AtDate datetime,
@FNLogged bit,
@ANLogged bit,
@LogTime varchar(10),
@LogOuttime varchar(10) 
AS
BEGIN   

select @AtDate 



SET NOCOUNT ON;    
    update Mst_Attendance set FNLogged=@FNLogged,
   ANLogged=@ANLogged,LogTime=@LogTime,LogOuttime=@LogOuttime 
   where EmployeeId=@Employee_id and Atdate = FORMAT(@AtDate,'MM/DD/YYYY')

select * from Mst_Attendance where Atdate=@AtDate and EmployeeId=@Employee_id


END
FORMAT()
不是SQL Server内置函数

您可以这样做:

update Mst_Attendance 
set 
    FNLogged=@FNLogged, ANLogged=@ANLogged, 
    LogTime=@LogTime, LogOuttime=@LogOuttime     
where 
    EmployeeId=@Employee_id AND
    Atdate = @AtDate

请告诉我您的
Atdate
列是
datetime
而不是
varchar()

以MM/DD/YY格式将datetime列作为字符串输出的替代方法:

CONVERT(VARCHAR, @AtDate, 1)
但是,这在查询中不是必需的,因为该列似乎已经是DateTime类型

更多内置日期转换格式:

试试看

 CONVERT(VARCHAR(10), @AtDate, 101) AS [MM/DD/YYYY]

但是,您的AtDate列肯定应该是datetime吗?

您使用的是什么数据库和版本?根据语法,我假设它是MS SQL Server,但它是什么版本?2000年,2008年

在MS SQL Server中,没有
格式
函数。但是您可以使用
转换

CONVERT(VARCHAR(10), @AtDate ,101)
101在这里表示“MM/DD/YYYY”。对于其他格式,请检查


我假设数据库中的
Atdate
字段是VARCHAR(10)(否则根本不需要任何转换)。但我强烈建议不要这样做。只要可能,对日期使用
DATETIME
notVARCHAR

OP不输出日期时间;而是使用它进行筛选。此过程返回一个不正确的值。也就是说,我想要日期格式dd/mm/yyyy。但是如果您的
AtDate
列的类型也是
DATETIME
(我当然希望是!),则获取一个mm/dd/yyyy,然后,您根本不需要任何格式设置/转换-只需比较
和AtDate=@AtDate
-保持简单易懂!
DATETIME
始终是
DATETIME
DATETIME
-无需格式化/转换/修改!按原样使用…可能重复您为什么再次问相同的问题???修复您的数据库:使用varchar()存储日期时间的设计很差。as[MM/DD/YYYY]上也有一个错误。ASAtDate列附近的语法不正确smalldatetime@aswathi:您刚才在评论中说AtDate是数据库中的SMALLDATETIME,对吗?那么根本不需要转换。只需从存储过程中删除格式和转换,以及从C#代码中删除.toString,就可以了