【问题标题】:date format issue with asp.net and sql serverasp.net 和 sql server 的日期格式问题
【发布时间】:2011-11-17 04:24:09
【问题描述】:

当我通过 asp.net 向 sql server 2008 数据库插入数据时,应用程序日期以下列格式插入数据库

“2011 年 6 月 10 日”

这是错误的,我需要插入“dd/mm/yyyy”或“yyyy/mm/dd”格式。为什么会发生这种情况

【问题讨论】:

  • 将您的代码发布到您设置发送到数据库的日期的位置。您可以选择任何您喜欢的格式。

标签: asp.net sql-server date


【解决方案1】:

如果您在数据库端的数据类型是 datetimedate(在 sql server 2008 上),那么无论您将日期插入为 '10 june 2011' 还是 '6/10/2011' 还是 @987654325 都无关紧要@。如果您看到数据实际上显示为'10 June 2011',那更有可能是因为您的数据类型是varcharnvarchar。如果是这种情况并且该字段仅用于保存日期,我建议您将数据类型更改为实际上是 datetimedate

【讨论】:

    【解决方案2】:

    使用DateTime.TryParseExact()方法解析日期。

    string inputDate="10 June 2011";
    string []format ={ "dd MMMM yyyy","dd MMM yyyy"};
    DateTime date;
    
    if (DateTime.TryParseExact(inputDate, format, CultureInfo.InvariantCulture, 
                               DateTimeStyles.None, out date))
     {
         Console.WriteLine("Valid " + date);
     }
    

    【讨论】:

      【解决方案3】:

      表格列的数据类型是Nvarchar,所以它以上述格式保存数据是错误的。通过运行以下命令,我解决了我的问题

      SET DATEFORMAT DMY;
      
      ALTER TABLE #tmpTest ALTER COLUMN MyCol DATE;
      

      【讨论】:

      • 我认为正确的做法是将@Icarus 发布的答案设置为已接受的答案,因为看起来他给你的方向实际上解决了问题......那不是真的?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多