【问题标题】:Changing In DateTime Format [closed]更改日期时间格式[关闭]
【发布时间】:2015-08-29 22:46:26
【问题描述】:

我已将页面后端的格式更改为dd-mm-yy,我想在数据库中以'dd-mm-yy'格式保存日期,例如'23-02-2015'。并以这种格式检索它,我是在文本字段中使用日期时间选择器...我将日期选择器的格式更改为我的“dd-mm-yyyy”,但它没有以该格式保存数据并导致以下错误

字符串未被识别为有效的日期时间。

有什么建议吗?

【问题讨论】:

  • 将其转换回默认日期时间格式以将其存储在数据库中:yyyy-mm-dd
  • 更好的是,在 C# 中将其存储为 DateTime 对象,并在向用户显示时仅转换为 dd-mm-yy 中的字符串
  • @所有亲密的选民:我不同意。这个问题并不清楚。它可能不符合 SO 上预期的问题标准,但问题本身(作为导致错误的下层问题)非常清楚(尽管可以通过谷歌搜索错误消息来避免)。

标签: c# sql asp.net sql-server-2008 date-format


【解决方案1】:

不要使用字符串来表示日期。
the DateTime struct of c# maps to sql server's datetime data type directly,这意味着您可以简单地将DateTime 结构作为参数值发送到您的SqlCommand 对象中(我希望您使用parameterized queries或存储过程。如果没有,请立即开始使用它们,除非您想容易受到Sql injection 攻击。)

阅读herethere了解sql server中日期值的显示格式和存储格式的区别。

【讨论】:

    【解决方案2】:

    “字符串未被识别为有效的日期时间。”

    首先,你为什么不发送日期时间对象?

    如果你不能(!),那么,

    如果您的日期时间对象 id dt 那么dt.ToString("yyyy-MM-ddTHH':'mm':'sszzz", DateTimeFormatInfo.InvariantInfo)

    这将是一个有效的 iso 日期时间字符串。

    The only truly safe formats for date/time literals in SQL Server, at least for DATETIME and SMALLDATETIME, are:

    YYYYMMDD
    YYYY-MM-DDThh:nn[:ss[:mmm]]
    

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 2013-06-29
      • 2017-05-13
      • 2015-08-04
      • 1970-01-01
      相关资源
      最近更新 更多