【问题标题】:Convert SQL Server Date to mm-yyyy将 SQL Server 日期转换为 mm-yyyy
【发布时间】:2015-05-04 18:11:00
【问题描述】:

我正在尝试将我的日期(例如 2012-04-20 05:54:59)格式转换为 mm-yyyy。我遇到了一些解决方案,说您需要转换为 varchar 。有什么方法可以使用转换功能吗?

谢谢:)

【问题讨论】:

  • 试试SELECT RIGHT(CONVERT(VARCHAR(10), GETDATE(), 105) , 7)
  • 我试过了,但是当我使用 varchar 时,我无法根据年份对日期进行排序。例如,假设我现在将日期从 2015-04-20 05:54:59 转换为 04-2015,因为这是 varchar 格式,并说明日期所在的列中是否有更多日期:03-2011, 06-2014。如果我对该列进行排序,我将得到以下信息:03-2011,04-2015,06-2014。对此 varchar 列进行排序不会对日期列进行排序。
  • 对列进行排序作为日期时间值,只需对您将用于显示的列执行此格式化相关任务。

标签: sql sql-server tsql sql-server-2014


【解决方案1】:

您可以使用FORMAT 函数,从 SQL Server 2012 开始提供:

DECLARE @myDate DATETIME = '2012-04-20 05:54:59'
SELECT FORMAT(@myDate, 'MM-yyyy') 

输出:

04-2012

【讨论】:

  • 谢谢 :) 。但是在这里,您已经在查询中输入了日期。如果我有一个日期列,我将如何构建命令???我尝试了以下方法,但没有成功:DECLARE @myDate (select date from dbo.EOD) SELECT FORMAT(@myDate, 'MM-yyyy')
  • @PrateekDaniels 如果您想格式化表格的特定列,例如列 [日期],那么您可以:select FORMAT([date], 'MM-yyyy') from dbo.EOD
  • 感谢一百万 @Giorgos ! :)
  • @PrateekDaniels 很高兴为您提供帮助。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
【解决方案2】:

可能有一种更优雅的方式来解决这个问题,但以下方法可行。

Declare @dt datetime = GETDATE() 

SELECT LEFT('0' + CAST(MONTH(@dt) as varchar(2)),2)  + '-' + CAST(YEAR(@dt) as char(4))

顺便说一句,我的正常日期转换备忘单是here,但我没有将 MM-YYYY 视为其中一种格式。

【讨论】:

  • 正确的应该是 RIGHT 函数,因为当您超过 9 月时,您会想要两个最终数字。
【解决方案3】:
  select [MM-YYYY] = right(convert(varchar(10),getdate(),105),7)

【讨论】:

  • 我试过了,但是当我使用 varchar 时,我无法根据年份对日期进行排序。例如,假设我现在将日期从 2015-04-20 05:54:59 转换为 04-2015,因为这是 varchar 格式,并说明日期所在的列中是否有更多日期:03-2011, 06-2014。如果我对该列进行排序,我将得到以下信息:03-2011,04-2015,06-2014。对此 varchar 列进行排序不会对日期列进行排序。
【解决方案4】:

当您使用 SQL Server 2014 时,您可以使用FORMAT,这是最好的,您也可以应用它:

SELECT CONVERT(VARCHAR(2),MONTH(yourDateTimeField)) + '-' + 
       CONVERT(VARCHAR(4),YEAR(yourDateTimeField)) AS [MM-YYYY]
FROM yourTable
ORDER BY yourDateTimeField

【讨论】:

  • 我试过了,但是当我使用 varchar 时,我无法根据年份对日期进行排序。例如,假设我现在将日期从 2015-04-20 05:54:59 转换为 04-2015,因为这是 varchar 格式,并说明日期所在的列中是否有更多日期:03-2011, 06-2014。如果我对该列进行排序,我将得到以下信息:03-2011,04-2015,06-2014。对此 varchar 列进行排序不会对日期列进行排序。
  • 您只需要根据您的日期时间字段对其进行排序并将其显示为 MM-YYYY。查看我更新的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
相关资源
最近更新 更多