2014-12-02 119 views
0

我期待修改mysql數據庫在這個SQL查詢..修改日期格式

SELECT *, COUNT(*) as TotalValueCount 
    FROM 
    wp_rg_lead 
    INNER JOIN wp_rg_lead_detail ON 
    wp_rg_lead.id=wp_rg_lead_detail.lead_id 
    WHERE wp_rg_lead.form_id = '47' 
    AND cast(date_created as date) >= current_date - interval '7' day 
    AND field_number = '18' 
    GROUP BY value,date_created 

這樣,而不是「CURRENT_DATE」格式爲「2014年11月12日20 :34:12'它只是返回日期而不是顯示時間。我已經看了格式功能,但不能看到如何應用它在這種情況下

+0

你的問題是什麼? – 2014-12-02 12:36:56

回答

1

我懷疑日期算術沒有做你想做的。你可以試試:

cast(date_created as date) >= date_sub(current_date, interval 7 day); 

編輯:

如果你真的想要的當前日期/時間的時間部分,然後用now()CURRENT_TIMESTAMP

cast(date_created as date) >= date_sub(now(), interval 7 day); 
+0

我在想同樣的方式,但似乎上面的語法是有效的。 – i486 2014-12-02 12:42:00

+0

是否有now()的版本,它會返回日期組件? – fightstarr20 2014-12-02 12:50:18

+1

@ fightstarr20。 。 。 'CURRENT_DATE'返回日期組件。但是,在MySQL的一些奇怪特性中,這些返回的是字符串或數字,但不是日期。這有時會導致它們的算術返回異常值,建議使用'date_sub()'和'date_add()'方法。 – 2014-12-02 13:03:00

0

你可以只是包裝CURRENT_DATE在日期()函數:

iee日期(current_date),這將從任何日期時間提取日期,並對此進行計算。

+0

閱讀戈登的答案後錯讀了問題..忽略此:) – 2014-12-02 12:48:08

0

你正在選擇每個列(*),默認給出列名我的朋友。如果要更改特定列的輸出格式,則需要指定列。

下面是語法來實現這一點:

SELECT DATE_FORMAT(DT,'%Y-%間 - %d%K:%I:%S') AS Date FROM myTableName;

所以,與其選擇*,把列名(S),並指定你要求的格式,即:

SELECT column1, DATE_FORMAT(**date_column**,'%Y-%m-%d %k:%i:%s') AS `Date` , 
COUNT(*) as TotalValueCount 
    FROM 
    wp_rg_lead 
    INNER JOIN wp_rg_lead_detail ON 
    wp_rg_lead.id=wp_rg_lead_detail.lead_id 
    WHERE wp_rg_lead.form_id = '47' 
    AND cast(date_created as date) >= current_date - interval '7' day 
    AND field_number = '18' 
    GROUP BY value,date_created 

希望幫助!