【问题标题】:Getting the month to show date name rather than number when pulling each month in the year在一年中的每个月拉动时,让月份显示日期名称而不是数字
【发布时间】:2018-05-15 00:59:40
【问题描述】:

我正在提取列出一​​年中每个月的数据,但月份列显示每年的第一天,我怎样才能让这个显示完整的月份名称? 这是我所拥有的一些东西。我阅读了类似的问题,并试图在各处添加它所说的内容,但我无法让它工作,帮助?

SELECT a.MonthDate
,Sum(a.ScrapPcs) / (Sum(a.GrossPcs)*1.00) As ScrapPct
,0.05 As ScrapTarget
 ,sum (a.GrossPcs) As 'Total Parts Cast'
 ,sum (a.ScrapPcs) as 'Total Parts Scrap'

,CASE 

 WHEN Sum(a.ScrapPcs) / (Sum(a.GrossPcs)*1.00) <= 0.05 THEN 1

 WHEN Sum(a.ScrapPcs) / (Sum(a.GrossPcs)*1.00) >= 0.9*.05 THEN -1

 ELSE 0

 END 
 AS Status


FROM 
(

SELECT DATEADD(month, DATEDIFF(month, 0, b.CreationProdDate), 0) As MonthDate
      ,Count(b.BOOKING_ID) As ScrapPcs
      , 0 As GrossPcs

FROM dbo.CPC_BOOKING b

WHERE b.CreationProdDate Between DATEADD(yy, DATEDIFF(yy, 0, GetDate()), 0) AND DateAdd("d", -1, GetDate())
and CPC_BookingTyp_ID in (2,8)
and ManufacturingPlant in (90002604,90017699, 90017705)


GROUP BY DATEADD(month, DATEDIFF(month, 0, b.CreationProdDate), 0)


UNION ALL 


SELECT DATEADD(month, DATEDIFF(month, 0, n.ProductionDate), 0) As MonthDate
      ,0 As ScrapPcs
      ,Sum(n.Quantity) As GrossPcs

 FROM [NORIS].[dbo].[MDL_Data_Ultimate] n

WHERE n.ProductionDate Between DATEADD(yy, DATEDIFF(yy, 0, GetDate()), 0) AND DateAdd("d", -1, GetDate())
and n.ManufacturingPlantGroup = 1

GROUP BY DATEADD(month, DATEDIFF(month, 0, n.ProductionDate), 0)
) a


group by a.MonthDate

提前感谢,有什么帮助

【问题讨论】:

  • MySQLSQL Server ?
  • 这不能同时是 mysql 和 sqlserver,因为每个人的答案都不一样,我们无法回答。
  • 使用 Date_Format()。阅读本文以获取更多信息w3schools.com/sql/func_mysql_date_format.asp
  • 这应该是 MySQL 或 SQL 服务器之一,因此这两个有不同的方法
  • @bksi -- 实际上编写一个适用于两者的解决方案并不难......也许这就是他所需要的。 ;)

标签: mysql sql sql-server date


【解决方案1】:

对于 MS SQL Server:

如果您希望月份名称在派生表中使用:

SELECT datename(month,DATEADD(month, DATEDIFF(month, 0, b.CreationProdDate), 0)) As MonthDate

也就是说,您要将datename(month, date)函数应用于两个联合查询的第一列。

【讨论】:

  • 我想你想要datename(month,b.CreationProdDate) 那不一样吗?
  • @Hogan 我不这么认为,根据technet.microsoft.com/en-us/library/…,datename 函数需要 datepart 和 date 作为参数
  • 我有两个争论——但我编辑了它,你看到的是第一个版本吗?
  • @Hogan 啊,是的,我看到了第一个版本
  • 我的观点是第一列是一些花哨的代码来获取当月的第一天,你不需要使用 datename 函数
【解决方案2】:

对于 MySQL: https://www.w3resource.com/mysql/date-and-time-functions/mysql-monthname-function.php 按照该网页上的示例使用 MONTHNAME 函数。

SELECT MONTHNAME(a.MonthDate)

【讨论】:

  • 谢谢,我读过类似的东西,但直到你的回答才弄清楚该放在哪里
  • 没问题,请随意接受我的回答为最正确的:-)
  • @JohnMitchell -- 或者至少是在他使用的平台上赢得 50% 彩票的人。
猜你喜欢
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多