簡體   English   中英

如何在 MySQL 中使用 to_char 函數功能

[英]How to use to_char function functionality in MySQL

我有一個表tine_by_day並且我知道如何在oracle使用TO_CHAR函數,但是如果我在MySQL使用如何獲得相同的輸出?

MySQL是否有TO_CHAR()轉換函數?

我已經嘗試過date_format而不是to_char但我沒有得到足夠的結果。

SELECT
    to_char(t.the_date,'mm-DD-YYYY') Date,
    SUM(sf7.unit_sales) UnitSales,
    SUM(sf7.store_sales) StoreSales,
    SUM(sf7.store_cost) StoreCost
FROM time_by_day t INNER JOIN sales_fact_1997 sf7 ON t.time_id=sf7.time_id
WHERE
    to_char(t.the_date,'YYYY-MM-DD')>='2012-01-01'
    AND
    to_char(t.the_date,'YYYY-MM-DD')<='2012-01-07'
GROUP BY t.the_date
ORDER BY t.the_date

在 SQL Server 中,您通常會使用convert()函數,它不如to_char()方便。 對於您的查詢,您只需要在select子句中使用它:

SELECT convert(varchar(10), t.the_date, 110) as Date,
       SUM(sf7.unit_sales) as UnitSales,
       SUM(sf7.store_sales) as StoreSales,
       SUM(sf7.store_cost) as StoreCost
FROM time_by_day t INNER JOIN
     sales_fact_1997 sf7
     ON t.time_id = sf7.time_id
WHERE t.the_date >='2012-01-01' AND
      t.the_date <= '2012-01-07'
GROUP BY t.the_date
ORDER BY t.the_date;

SQL Server通常會將 ISO 標准 YYYY-MM-DD 視為日期並自動進行轉換。 有一個特定的國際化設置將其視為 YYYY-DD-MM,唉。 無論此類設置如何,以下內容都應正確解釋(盡管我會使用上述形式):

WHERE t.the_date >= cast('20120101' as date) AND
      t.the_date <= cast('20120107' as date)

編輯:

在 MySQL 中,您只需使用date_format()

SELECT date_format(t.the_date, '%m-%d-%Y') as Date,
       SUM(sf7.unit_sales) as UnitSales,
       SUM(sf7.store_sales) as StoreSales,
       SUM(sf7.store_cost) as StoreCost
FROM time_by_day t INNER JOIN
     sales_fact_1997 sf7
     ON t.time_id = sf7.time_id
WHERE t.the_date >= date('2012-01-01') AND
      t.the_date <= date('2012-01-07')
GROUP BY t.the_date
ORDER BY t.the_date;

基於 Gordons 方法,但使用 CHAR(10) 而不是 VARCHAR(10) 因為幾乎沒有一個日期不返回長度為 10 ......

SELECT convert(char(10), t.the_date, 110) as [Date],
   SUM(sf7.unit_sales) as UnitSales,
   SUM(sf7.store_sales) as StoreSales,
   SUM(sf7.store_cost) as StoreCost
FROM time_by_day t INNER JOIN
 sales_fact_1997 sf7
 ON t.time_id = sf7.time_id
WHERE t. the_date >='20120101' AND
  t.the_date <= '20120107'
GROUP BY t.the_date
ORDER BY t.the_date;

編輯:還將 WHERE 子句中的日期格式更改為符合 ISO,因此不受 DATEFORMAT 設置的影響。

建議你這樣做:

CAST($(STR) AS CHAR(40))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM