将SQL Server日期时间转换为较短的日期格式

kae*_*aes 74 t-sql sql-server datetime

datetime在SQL Server中有一个列,它给我这样的数据10/27/2010 12:57:49 pm,我想查询这个列,但只是让SQL Server返回日月和年 - 例如.2010 10 27或类似的东西.

我应该研究哪些功能?

我应该尝试转换为其他日期数据类型吗?或者只是将其转换为字符串?

Ada*_*Dev 115

看看CONVERT.第3个参数是您要转换为的日期时间样式.

例如

SELECT CONVERT(VARCHAR(10), GETDATE(), 103) -- dd/MM/yyyy format
Run Code Online (Sandbox Code Playgroud)

  • 看来106是"dd mon yy","dd/MM/yyyy"是103 (12认同)
  • 此外,如果您希望结果格式化为mm/dd/yyyy,则可以使用101 (5认同)
  • @nahab你是对的.此外,我不得不使用varchar(11)而不是varchar(10)来防止缩短年份(例如,我看到195而不是1953) (3认同)
  • @iliketocode +1为所有美国人 (2认同)

jab*_*ong 53

试试这个:

print cast(getdate() as date )

  • 我更喜欢这个选项而不是接受的答案.它以Date格式保留列,以便我的'order by'正常工作而不仅仅是varchar. (5认同)
  • 这不适用于SQL Server 2005及更早版本。DATE数据类型是在SQL 2008中引入的。 (2认同)

Isr*_*ies 13

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

Select Convert(DateTime, Convert(VarChar, GetDate(), 101))
Run Code Online (Sandbox Code Playgroud)


CD *_*sen 9

除了CAST和CONVERT之外,如果您使用的是Sql Server 2008,则可以转换为日期类型(或使用该类型开头),然后可以选择再次转换为varchar:

declare @myDate date
set @myDate = getdate()
print cast(@myDate as varchar(10))
Run Code Online (Sandbox Code Playgroud)

输出:

2012-01-17
Run Code Online (Sandbox Code Playgroud)


小智 6

使用SQL Server 2005,我会使用这个:

select replace(convert(char(10),getdate(),102),'.',' ')
Run Code Online (Sandbox Code Playgroud)

结果:2015 03 05


BIR*_*Guy 6

如果你有一个日期时间字段给出这样的结果 2018-03-30 08:43:28.177

建议: 并且您希望将日期时间更改为日期显示为 2018-03-30

cast(YourDateField as Date)
Run Code Online (Sandbox Code Playgroud)


bsi*_*vel 5

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

Select Convert(varchar(8),getdate(),1)
Run Code Online (Sandbox Code Playgroud)