【问题标题】:Entering SQL Records With Dates Uses Wrong Date Format输入带有日期的 SQL 记录使用错误的日期格式
【发布时间】:2017-01-30 15:41:54
【问题描述】:

使用:实体框架,Sql Server 2014。 我的应用程序区域设置/全球化尚未设置(还)。

我的问题是这样的; 在处理应用程序周围的日期时,它们采用正确的英国日期格式:- dd/mm/yyyy

但是,当我使用这些日期并将它们输入我的 SQL 数据库(在共享托管 SQL Server 上)时,它们以美国格式 mm/dd/yyyy 输入。

如何更改它,以便日期以英国格式进入数据库?请记住,我无法触摸服务器上的设置。

我正在考虑使用语言环境设置或 web.config 中的连接字符串,但我无法在网上找到任何可以确定的确切信息。

我以为这样可以解决问题,但还没有尝试过。

<configuration>
  <system.web>
    <globalization
      fileEncoding="utf-8" 
      requestEncoding="utf-8" 
      responseEncoding="utf-8"
      culture="en-GB"
      uiCulture="en-GB"
    />
  </system.web>
</configuration>

编辑:这是 EF 生成的代码

  public int CreatedBy { get; set; }
    public System.DateTime CreatedDate { get; set; }
    public Nullable<int> ModifiedBy { get; set; }
    public Nullable<System.DateTime> ModifiedDate { get; set; }
    public bool Enabled { get; set; }
    public Nullable<int> ProductSettingId { get; set; }
    public Nullable<int> ProductAreaMinimumPremiumId { get; set; }
    public int ProductId { get; set; }
    public int StatusId { get; set; }
    public Nullable<System.DateTime> InceptionDate { get; set; }
    public Nullable<decimal> Gross { get; set; }
    public Nullable<decimal> Ipt { get; set; }

我的所有 DateTime 属性都有问题。

如果用户界面/应用程序中的日期是 12/01/2017,它将作为 2017 年 12 月 1 日进入数据库,而应该是 2017 年 1 月 12 日。

【问题讨论】:

  • 这是本地 Web 应用程序配置 -- 您需要更改数据库服务器。
  • 您是将其保存为 .net DateTime 对象,还是仅使用字符串?
  • @j.v.它是 EF 中的 DateTime 变量。数据库中的日期时间。
  • 我对此表示怀疑……不久之后就有了somehow related question。但在这种情况下,中间有一个自行完成的通用过程,它将所有内容都转换为字符串。 您看到的字符串不是实际值!! 它是值的格式化文本表示。 .Net-DateTime 以类型安全的方式映射到 sql-DATETIME。不应该有任何中间状态,你应该担心......
  • 您在最后一次编辑后显示的代码未显示您如何与 RDBMS 实际通信数据。你有没有看过我发布的链接。还涉及到可为空的属性...

标签: sql asp.net sql-server asp.net-mvc date


【解决方案1】:

我必须向大家道歉!原来我的问题在于应用程序文化/语言环境。

通过添加:

 <configuration>
  <system.web>
    <globalization
      culture="en-GB"
      uiCulture="en-GB"
    />
  </system.web>
</configuration>

成功了。

我也确实在我的数据库上运行了这一行,所以我不知道这两个是否一起整理出来。

  ALTER LOGIN {{MY LOGIN}} WITH DEFAULT_LANGUAGE=British

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 2014-11-21
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多