【问题标题】:MS SQL Server Date Month OutputMS SQL Server 日期月输出
【发布时间】:2020-06-26 21:14:06
【问题描述】:

SQL 会将月份部分输出为数字,但我想输出 3 字符版本(Jan、Feb、Mar 等)

到目前为止我的查询是

SELECT  MONTH(dtm_StartDate) AS Month, COUNT(tbl_Bookings.int_BookingID) AS CountOfBookings, 
SUM(tbl_Bookings.int_ToOwner) AS IncomeToOwner
FROM    tbl_Bookings INNER JOIN
        tbl_Properties ON tbl_Bookings.int_PropertyID = tbl_Properties.int_PropertyID INNER JOIN
        tbl_Owners ON tbl_Properties.int_OwnerID = tbl_Owners.int_OwnerID
WHERE   (tbl_Bookings.dtm_StartDate >= '2020-01-01') AND (tbl_Bookings.dtm_StartDate <= '2020-12-31')
AND     tbl_Properties.int_PropertyID = 1
GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, tbl_Bookings.dtm_StartDate), 0), MONTH(dtm_StartDate),tbl_Properties.str_PropertyName

【问题讨论】:

  • 请标记您的 DBMS
  • 抱歉 - 现在完成 - MS SQL Server

标签: sql sql-server tsql


【解决方案1】:

每个 DBMS 的方式都不同

这里有几个 4 个 DBMS

MS SQL Server

Select Convert(char(3), GetDate(), 0)

MySQL

Select DATE_FORMAT(curdate(), '%b') AS Displaydate

Postgresql

SELECT TO_CHAR(TIMESTAMP 'NOW()', 'Mon') AS "Month";

甲骨文

SELECT TO_CHAR(CURRENT_DATE, 'MON') FROM dual;

因此,在您的情况下,请使用适当的日期字段而不是当前日期(我以该日期为例)

例如。对于 SQL Server

SELECT  Convert(char(3), dtm_StartDate, 0) AS Month, COUNT(tbl_Bookings.int_BookingID) AS CountOfBookings, 
SUM(tbl_Bookings.int_ToOwner) AS IncomeToOwner
FROM    tbl_Boo ....

【讨论】:

  • 好的,谢谢 - 然后我遇到了分组问题 - 列 'tbl_Bookings.dtm_StartDate' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
  • 对组也做同样的事情,我的意思是把 MONTH(dtm_StartDate) 放在 Convert(char(3), dtm_StartDate, 0)
【解决方案2】:

这对MS SQL Server也很有用

DECLARE @yourdate date = '2020-01-01'
SELECT FORMAT(@yourdate, 'MMM') AS YourDate

输出

Jan

【讨论】:

    【解决方案3】:

    在 MySQL 中是:

    SELECT DATE_FORMAT(dtm_StartDate, '%b') AS Month
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      相关资源
      最近更新 更多