如何转换/转换此日期时间格式: 06/17/2012 12:00:00 AM
至此日期格式: 2012/06/17
在SQL Update语句中?
我需要更改为字段。 BeginDate和EndDate。两种日期时间类型。
到目前为止,这是我的更新声明:
Update discount set DiscountPromotionalID = @DiscountPromotionalID,
isActive =@isActive, Title = @Title, BeginDate = @BeginDate, EndDate = @EndDate,
DiscountPercentage = @DiscountPercentage
where DiscountPromotionalID = @DiscountPromotionalID;"
答案 0 :(得分:1)
如果您将其存储为NVARCHAR(您不应该将其存储),则可以在执行insert / update语句时使用以下内容进行转换。我建议将此列转换为正确的DateTime字段,然后您可以根据评论者的建议在表示层中进行格式化。
查看此资源以了解所有SQL数据格式需求(使用示例sql!)
http://www.sql-server-helper.com/tips/date-formats.aspx
我相信你正在寻找这样的东西(来自上面的资源):
CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD]
答案 1 :(得分:0)
与C#DateTime
值类似,SQL Server DateTime
值没有格式:它只是一个由两个32位整数组成的64位字段。第一个计算自纪元以来的日子(1900年1月1日00:00:00.000);第二个计算自1/300秒开始的时间以来的时间。
在显示格式时应用格式,或者使用CONVERT()在SQL中将其转换为char / varchar,或者在客户端代码中。
您的update
声明并不关心格式:它关心价值。如果您将C#DateTime
值作为SqlParameter
传递给您的存储过程或参数化查询,则会发生正确的事情:CLR将神奇地将其转换为另一个。
如果从C#传递一个字符串作为DateTime参数,则它必须采用SQL Server将识别为DateTime字符串的格式。假设是这种情况,从C#字符串到SQL Server DateTime值的转换同样会神奇地发生。
鉴于您的update
语句,代码如下所示:
public int UpdateDiscount( int discountPromotionalID , bool isActive , string title , DateTime beginDate , DateTime endDate , int discountPercentage )
{
const string updateQuery = @"
Update discount
set DiscountPromotionalID = @DiscountPromotionalID ,
isActive = @isActive ,
Title = @Title ,
BeginDate = @BeginDate ,
EndDate = @EndDate ,
DiscountPercentage = @DiscountPercentage
where DiscountPromotionalID = @DiscountPromotionalID
" ;
int rowsAffected ;
using ( SqlConnection connection = new SqlConnection( SomeConnectString ) )
using ( SqlCommand cmd = connection.CreateCommand() )
{
cmd.CommandText = updateQuery ;
cmd.CommandType = CommandType.Text ;
cmd.Parameters.AddWithValue( "@DiscountPromotionalID" , discountPromotionalID ) ;
cmd.Parameters.AddWithValue( "@isActive" , isActive ? 1 : 0 ) ; // C# bools are true/false; SQL bools are 1/0
cmd.Parameters.AddWithValue( "@Title" , title ) ;
cmd.Parameters.AddWithValue( "@BeginDate" , beginDate ) ;
cmd.Parameters.AddWithValue( "@EndDate" , endDate ) ;
cmd.Parameters.AddWithValue( "@DiscountPercentage" , discountPercentage ) ;
connection.Open() ;
rowsAffected = cmd.ExecuteNonQuery() ;
connection.Close() ;
}
return rowsAffected ;
}