【问题标题】:Wrong retrieved date format from SQL Server从 SQL Server 检索到的日期格式错误
【发布时间】:2018-12-04 03:48:00
【问题描述】:

我将日期保存在数据库中,例如DateTime.Now.ToShortDateString(),格式类似于数据库中的yyyy-MM-dd

问题是,当我使用选择查询检索该日期时,它得到的日期类似于 yyyy-MM-dd HH:mm:ss tt

我的问题是如何以 yyyy-MM-dd 的格式从数据库中获取日期?

例如:

  • 我的数据库表中的日期:2018-12-03
  • 检索日期:2018-12-03 12:00:00 AM

我希望检索日期,如:2018-12-03

有什么建议吗?

【问题讨论】:

  • 如果你能提供minimal reproducible example就太好了
  • 您可以将日期值转换为字符串并按照您希望的方式对其进行格式化。我不知道你的代码是什么样的,所以在这个阶段无法提供进一步的帮助
  • 你想从数据库中获取什么类型?如果它是 DateTime 而不是字符串 - 它只是用默认值初始化,你不能用它做任何事情。因此,如果您能向我们展示您如何尝试使用这些检索到的数据以及真正的问题在哪里,那就更好了?
  • 澄清问题:您的原始问题被标记为 C#,但您似乎在根据标题询问 SQL Server 问题...只是想确认您需要什么?您需要在 C# 中还是通过 SQL 查询进行转换?

标签: c# sql-server


【解决方案1】:

您的问题是表中的列仍被定义为完整的日期时间,因此无论您如何插入或更新它,它都会添加额外的信息。您需要做的就是在 select 上使用 convert 函数:

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

SELECT convert([columnName],varchar(10),111) FROM [tablename]

【讨论】:

  • 谢谢 .. 问题出在查询而不是 c# 中的代码
【解决方案2】:

你可以试试这个:

DateTime.ParseExact(dateVariable, "yy/MM/dd HH:mm:ss", 
    CultureInfo.InvariantCulture
    ).ToString("MM-dd-yyyy")

【讨论】:

    【解决方案3】:

    您可以使用
    CONVERT(desired-type, your data, format)将结果转换为所需的字符串/精确日期格式。看看我下面的代码 sn-ps:

     declare @date as datetime
     declare @string varchar(30)
     declare @tempDate date
    
     set @date = '2012-02-03 12:00:03 AM'
     --convert into string format
     set @string = CONVERT(varchar, @date, 1)
     --convert into Date format, you want
     set @tempDate = CONVERT(date, @date,1)
    
     select @string as time
     select @tempDate as another
    

    【讨论】:

      猜你喜欢
      • 2015-12-28
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 2010-12-14
      • 2017-05-12
      相关资源
      最近更新 更多