我在 SQL Server 2008 数据库中有一个数据类型为 datetime2 的列。这意味着我的日期以 YYYY-MM-DDThh:mm:ss 格式显示。但是,我需要我的日期默认采用 dd/mm/YYYY 格式,并且我无法更改列数据类型。此外,datetime2 格式不受 SET LANGUAGE 和 SET DATEFORMAT 会话区域设置的影响。最后,我不想使用 convert() 功能,否则我需要重写所有查询。
如何仍然可以实现?
非常感谢!
我在 SQL Server 2008 数据库中有一个数据类型为 datetime2 的列。这意味着我的日期以 YYYY-MM-DDThh:mm:ss 格式显示。但是,我需要我的日期默认采用 dd/mm/YYYY 格式,并且我无法更改列数据类型。此外,datetime2 格式不受 SET LANGUAGE 和 SET DATEFORMAT 会话区域设置的影响。最后,我不想使用 convert() 功能,否则我需要重写所有查询。
如何仍然可以实现?
非常感谢!
当你说“显示”时——显示在哪里?在 SSMS 中?然后,您需要更改您的查询。在应用程序/报告中?然后更改应用程序代码/报告以正确格式化日期。
日期是 SQL 中的日期——“格式”只是您可视化日期时的考虑因素。如果您不指定格式(使用CONVERT
),将使用“默认”格式datetime2
。datetime2
据我所知,没有系统范围的设置可以覆盖该默认值。
不要再想日期是如何存储的了。如果您真的希望您的日期显示为dd/mm/yyyy
,请在最后一步应用该格式(例如,在 C# 中使用 Format() 或 ToString())。或者,如果您在查询级别需要它,那么请正确编写查询 - 您必须返回并添加CONVERT()
,例如:
DECLARE @d DATETIME2 = CURRENT_TIMESTAMP;
SELECT CONVERT(CHAR(10), @d, 103);
更改数据类型以某种方式将这些数据更改为错误的数据类型是完全错误的,这样您就可以在数据库级别强制执行您的首选格式。