2012-01-17 144 views
57

我在SQL Server中有一个datetime列,它给了我这样的数据10/27/2010 12:57:49 pm,我想查询此列,但只让SQL Server返回日期月和年 - 例如。 2010 10 27或类似的东西。将SQL Server日期时间转换为更短的日期格式

我应该研究哪些功能?

我应该试图转换为另一种日期数据类型吗?或者简单地将其转换为字符串?

+5

SQL Server的哪个**版**? SQL Server 2008引入了一系列新的与日期和时间相关的数据类型,例如'DATE' - 所以如果你在2008年,你可以使用'SELECT CAST(YourDateTimeColumn AS DATE)',你只需要返回日期 - 没有时间部分。 – 2012-01-17 20:25:00

+1

看看这篇文章:http://msdn.microsoft.com/en-us/library/ms187928.aspx具体>日期和时间样式 – Brissles 2012-01-17 20:21:47

+0

@marc_s http://meta.stackoverflow。com/questions/314561/are-votes-to-a-question-comment-higher-valuable-than-votes-for-an-answer – apaul 2016-01-12 21:33:23

回答

84

看一看CONVERT。第三个参数是要转换为的日期时间样式。

例如

SELECT CONVERT(VARCHAR(10), GETDATE(), 103) -- dd/MM/yyyy format 
+10

看起来106是“dd mon yy” 和“dd/MM/yyyy”是103 – nahab 2012-12-07 15:30:10

+2

@nahab您是对的。此外,我必须使用varchar(11)而不是varchar(10)来防止年份缩短(例如,我看到195而不是1953年) – Henrov 2013-06-03 10:31:48

+2

另外,如果要格式化结果,则可以使用101 mm/dd/yyyy – iliketocode 2017-08-11 14:17:04

6

除了CAST和CONVERT,如果您使用的是SQL Server 2008中,你可以转换成日期类型(或使用该类型下手),然后有选择地重新转换为varchar:

declare @myDate date 
set @myDate = getdate() 
print cast(@myDate as varchar(10)) 

输出:

2012-01-17 
11

如果您需要在日期格式的结果,你可以使用:

Select Convert(DateTime, Convert(VarChar, GetDate(), 101)) 
35

试试这个:

print cast(getdate() as date)

+3

我喜欢这个选项比接受的答案更多。它以日期格式离开列,以便我的'order by'工作正常,而不仅仅是一个varchar。 – Milne 2017-06-21 16:22:57

+0

这不适用于SQL Server 2005及更早版本。 DATE数据类型是在SQL 2008中引入的。 – JerryOL 2018-01-24 19:35:10

-2

只需添加当日关键词。 例如选择日期(订单日期),从订单中计数(1)where orderdate>'2014-10-01'按日期(订单日期);

orderdate是日期时间。 此查询将显示该日期的订单而非日期时间。

应用于日期时间列的日期关键字会将其更改为短日期。

4

在SQL Server 2005,我会用这样的:

select replace(convert(char(10),getdate(),102),'.',' ') 

结果:2015年03 05

0

对于SQL Server的任何版本:DATEADD(DD,DATEDIFF (dd,0,getdate()),0)

1

mm/dd/yy的最短日期格式可以通过以下方式获得:

Select Convert(varchar(8),getdate(),1) 
相关问题