【问题标题】:Remove the time stamp from multiple date columns in select statement (MySQL)从选择语句中的多个日期列中删除时间戳(MySQL)
【发布时间】:2023-04-10 15:09:01
【问题描述】:

我目前正在尝试从多个日期列中删除时间戳。实际上,select 语句中的大多数列都包含日期。我想从查询结果中的所有日期值中删除时间戳。这可以在 MySQL 中完成吗?

select Date(column1, column2, column3...) FROM ... 似乎不起作用。 选择 DATE (column1), DATE(column2), DATE(column3).... 似乎也不起作用

SELECT 
col1,
col2,
col3, //this is a date field
col4  //this is a date field
FROM table1
UNION 
SELECT 
col1,
col2, //this is a date field
col3, //this is a date field
col4 //this is a date field
FROM table2

所有日期值不应包含时间戳

【问题讨论】:

  • 您查看过date() function 吗?你会使用date(col3), date(col4)
  • 使用DATE() 应该在这里工作。怎么不行?
  • @TimBiegeleisen date(col1), date(col2) 格式确实有效,但“date(col1)”现在成为导出中的列标题,这不是首选。

标签: php mysql sql drupal


【解决方案1】:

一种简单的方法是只使用DATE() 函数,以及您希望调用每个强制转换列的别名:

SELECT 
    col1,
    col2,
    DATE(col3) AS col3,
    DATE(col4) AS col4
FROM table1
UNION 
SELECT
    col1,
    DATE(col2) AS col2,
    DATE(col3) AS col3,
    DATE(col4) AS col4
FROM table2;

【讨论】:

  • 谢谢。这个方法也解决了列头问题
【解决方案2】:

规范方式使用date():

SELECT col1, col2,
       DATE(col3) as col3, //this is a date field
       DATE(col4) as col4  //this is a date field
FROM table1
UNION ALL
SELECT col1, col2,
       DATE(col3) as col3, //this is a date field
       DATE(col4) as col4  //this is a date field
FROM table2;

您也可以使用CAST(col3 as DATE)

或者,如果问题是即使在查看结果时仍然看到时间分量,您可以转换为字符串:

DATE_FORMAT(col3, '%Y-%m-%d')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多