我有以下查询:
SELECT DATEADD(DAY, 0 - (DATEPART(weekday, GETDATE()) % 7), GETDATE())
显示:
2014-04-19 10:47:46.790
如何修改查询以显示04/19/2014
或04-19-2014
答案 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)
这对你有用吗?