1

如何转换/转换此日期时间格式:06/17/2012 12:00:00 AM

至此日期格式:2012/06/17

在 SQL 更新语句中?

我需要更改字段。开始日期和结束日期。两种日期时间类型。

到目前为止,这是我的更新声明:

Update discount set DiscountPromotionalID = @DiscountPromotionalID,
   isActive =@isActive, Title = @Title, BeginDate = @BeginDate, EndDate = @EndDate, 
    DiscountPercentage = @DiscountPercentage

    where DiscountPromotionalID = @DiscountPromotionalID;" 
4

2 回答 2

1

如果您将其存储为 NVARCHAR (您不应该这样),您可以在执行插入/更新语句时使用以下内容对其进行转换。我建议将此列转换为适当的 DateTime 字段,然后您可以按照评论者的建议在表示层中随意格式化。

查看此资源以满足您的所有 SQL 数据格式化需求(使用示例 sql!)

http://www.sql-server-helper.com/tips/date-formats.aspx

我相信您正在寻找这样的东西(来自上面的资源):

CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD]
于 2012-08-20T20:54:35.143 回答
0

与 C#DateTime值一样,SQL ServerDateTime值没有格式:它只是一个由两个 32 位整数组成的 64 位字段。第一个计算纪元以来的天数(1900 年 1 月 1 日 00:00:00.000);秒以 1/300 秒为单位计算自一天开始以来的时间。

在使用CONVERT()在 SQL 中或在客户端代码中显示或将其转换为 char/varchar 时应用格式。

您的update陈述不关心格式:它关心价值。如果您将 C#DateTime值作为 aSqlParameter传递给您的存储过程或参数化查询,那么正确的事情将会发生: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 ;

}
于 2012-08-20T23:39:17.757 回答