【问题标题】:Datetime2 format to dd/mm/yyyyDatetime2 格式为 dd/mm/yyyy
【发布时间】:2014-01-08 14:19:00
【问题描述】:

我在 SQL Server 2008 数据库中有一个数据类型为 datetime2 的列。这意味着我的日期以 YYYY-MM-DDThh:mm:ss 格式显示。但是,我需要我的日期默认采用 dd/mm/YYYY 格式,并且我无法更改列数据类型。此外,datetime2 格式不受 SET LANGUAGE 和 SET DATEFORMAT 会话区域设置的影响。最后,我不想使用 convert() 功能,否则我需要重写所有查询。

如何才能做到这一点?

非常感谢!

【问题讨论】:

  • 不要。我再说一遍不要改变你存储这些数据的方式。而是在显示层中更改它。报表或应用层中的含义。应该是难以转换和查询时间。

标签: sql sql-server-2008 datetime2


【解决方案1】:

当你说“显示”时——显示在哪里?在 SSMS 中?然后,您需要更改您的查询。在应用程序/报告中?然后更改应用程序代码/报告以正确格式化日期。

日期是 SQL 中的日期——“格式”只是您可视化日期时的考虑因素。如果您没有指定格式(使用CONVERT),则将使用datetime2 的“默认”格式。据我所知,没有系统范围的设置可以覆盖 datetime2 的默认值。

【讨论】:

    【解决方案2】:

    不要再想日期是如何存储的了。如果您真的希望您的日期显示为 dd/mm/yyyy,则在最后一步应用该格式(例如,在 C# 中使用 Format() 或 ToString())。或者,如果您在查询级别需要此功能,请正确编写查询 - 您必须返回并添加 CONVERT(),例如:

    DECLARE @d DATETIME2 = CURRENT_TIMESTAMP;
    SELECT CONVERT(CHAR(10), @d, 103);
    

    更改数据类型以某种方式将这些数据更改为错误的数据类型是完全错误的,这样您就可以在数据库级别强制执行您的首选格式。

    【讨论】:

    • 好吧,如果这是我需要的,我需要使用不同的日期类型迁移数据,即日期,然后按顺序在数据库级别相应地设置日期格式
    • @Kris 请停止考虑数据库层的格式。将您的日期存储为日期;展示/展示时担心格式。
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    相关资源
    最近更新 更多