有没有办法在 SQL Server 中将日期格式化为 MM DD YYYY 而不是 YYYYMMDD? [复制]
Posted
技术标签:
【中文标题】有没有办法在 SQL Server 中将日期格式化为 MM DD YYYY 而不是 YYYYMMDD? [复制]【英文标题】:Is there any way to formate dates as MMDDYYYY instead of YYYYMMDD in SQL Server? [duplicate] 【发布时间】:2019-09-11 18:27:41 【问题描述】:我刚刚将日期设置为 VARCHAR 而不是日期,因为它们需要保持 MMDDYYYY 格式,我想知道是否有更好的方法来执行此操作。标准日期似乎只是作为 YYYYMMDD
【问题讨论】:
为什么首先将DATE
s 存储为字符串?
使用标准。仅在输出数据时转换为另一种格式。数据库提供了date
数据类型的功能丢失。您应该利用这一点。
因为我需要它们保持 MMDDYYYY 格式,而默认日期格式将它们存储为 YYYYMMDD。
哇.....日期作为字符串。这是一个非常非常非常糟糕的主意。
我相信您将输出格式与存储混淆了。日期只是一个数字,以整数形式存储在 sql 中。例如,您如何选择在查询中显示日期完全取决于您在前端使用的技术。
【参考方案1】:
将日期存储为数据库中的日期(或日期时间)。您应该在表示层(屏幕上、报告等)中格式化日期。这就是您使用工具的格式化功能以所需格式显示日期的地方。请记住,大多数 DBMS 中的日期都存储为长整数。您的查询工具实际上是将这些值格式化为显示的格式化日期。
这是一个以数字形式显示今天的快速查询:
SELECT 'Yesterday', CAST(DATEADD(DAY, -1, @Today) AS DECIMAL(32,20))
UNION
SELECT 'Today', CAST(@Today AS DECIMAL(32,20))
UNION
SELECT 'Tomorrow', CAST(DATEADD(DAY, 1, @Today) AS DECIMAL(32,20))
输出如下(如果我没记错的话,分数应该代表时间元素):
Today 43717.61447052469200000000
Tomorrow 43718.61447052469200000000
Yesterday 43716.61447052469200000000
这是在SQL Server中转换GETDATE()的presentation
的查询级方法:
SELECT CONVERT(VARCHAR, GETDATE(), 110)
输出:
09-11-2019
【讨论】:
但是是否可以将它们存储为另一种日期格式? 重点是,你没有need to
。你的眼睛被你的查询工具欺骗了;日期存储为长整数。您的查询工具是formatting
将长整数转换为日期格式。你应该在你的表现层做同样的事情。
@SvetlinZarev "TIMESTAMP" 与日期或时间无关。它已被弃用,不应使用。 DATE、TIME、DATETIME 和 DATETIME2 是有效的日期/时间格式。
@pmbAustin 你是对的,但我很确定当我写评论时标签不是“sql-serevr”以上是关于有没有办法在 SQL Server 中将日期格式化为 MM DD YYYY 而不是 YYYYMMDD? [复制]的主要内容,如果未能解决你的问题,请参考以下文章