2014-12-02 128 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 

希望帮助!