如何在SQL中以某种方式格式化日期

时间:2014-04-22 14:51:19

标签: sql sql-server tsql

我有以下查询:

SELECT DATEADD(DAY, 0 - (DATEPART(weekday, GETDATE()) % 7), GETDATE())

显示:

2014-04-19 10:47:46.790

如何修改查询以显示04/19/201404-19-2014

4 个答案:

答案 0 :(得分:4)

2014年4月22日

select convert(varchar(10), getdate(), 101)

for 04-22-2014

select convert(varchar(10), getdate(), 110)

答案 1 :(得分:3)

SELECT CONVERT(VARCHAR, DATEADD(DAY, 0 - (DATEPART(weekday, GETDATE()) % 7), GETDATE()), 101)

<强>输出

04/19/2014

SELECT CONVERT(VARCHAR, DATEADD(DAY, 0 - (DATEPART(weekday, GETDATE()) % 7), GETDATE()), 110)

输出

04-19-2014

或者,您可以在使用应用程序(在您的情况下为SSRS)中对此进行格式化。这可以这样做

=Format(date_column, "MM/dd/yyyy")

=Format(date_column, "MM-dd-yyyy")

答案 2 :(得分:3)

日期格式通常是表示层的责任,而不是数据层。 DateTime 没有格式 - 它实际上是日期和时间的表示。当您显示时,DateTime就是您选择格式时(如果您不选择格式,系统会默认选择一种格式)。

可以DateTime转换为varchar,但如果该值被其他系统消耗,那么我强烈推荐将其保留为DateTime并让显示日期的系统部分适当地转换它。否则,如果您需要进行任何类型的日期数学/比较/等,系统将必须将返回转换为可能导致问题的日期值。

根据您的后续评论,我会适当地格式化SSRS报告中的日期,让查询按原样生成数据值。

答案 3 :(得分:2)

我用它来显示仅限日期的部分:

SELECT CONVERT(VARCHAR(12), DATEADD(DAY, 0 - (DATEPART(weekday, GETDATE()) % 7), GETDATE()), 110)

这对你有用吗?