【问题标题】:extract the month and the year in this format: "mm-yyyy" along with all columns以这种格式提取月份和年份:“mm-yyyy”以及所有列
【发布时间】:2014-11-07 11:22:43
【问题描述】:

我的数据库中有一个字段从类型日期开始。我想以这种格式提取月份和年份:mm-yyyy,我还需要所有其他列。

我试过了:

$query='SELECT *, DATEADD(MONTH, DATEDIFF(MONTH, 0, start), 0) AS [start] FROM ...

根据 Getting only Month and Year from SQL DATE

但它不起作用。错误:

Incorrect parameter count in the call to native function 'DATEDIFF'"

我也不确定之后如何继续。发现这个: SQL Query - Change date format in query to DD/MM/YYYY

所以我的猜测是:

Convert(varchar(10),CONVERT(date,DATEADD(MONTH, (DATEDIFF(MONTH, 0, start), 0) AS [start]),106),103)

但我还有日子。

【问题讨论】:

  • 看起来您正在尝试使用 SQL Server 解决方案,但如果您的标签准确,那么您使用的是 MySQL。日期/时间函数是数据库系统很多变化的一个领域,因此即使它们具有相同名称的函数,也不能保证它们会做同样的事情。

标签: mysql


【解决方案1】:

使用DATE_FORMAT 函数。

SELECT DATE_FORMAT(start, '%m-%Y') FROM ...;

【讨论】:

  • 这是最好的版本,你仍然需要添加一个'0',因为格式是 m-yyyy 并且它在我的查询末尾干扰了 ORDER BY(即我的错,我没有提到它).THX
  • @AndiGiga,您不必添加“0”。试试SELECT DATE_FORMAT('2014-1-2', '%m-%Y')。它将返回01-2014
  • 我的意思是你必须这样做的其他解决方案。对困惑感到抱歉。您的解决方案非常完美。
  • 对此的不同转折可能是SELECT DISTINCT(DATE_FORMAT(start, '%Y-%m')) FROM ...。这样您就可以获得所有相关的年月组合。
【解决方案2】:

您正在为 MySQL 安装使用 SQL-Server 语法。那是行不通的。每个数据库引擎的语法和功能都略有不同。使用

SELECT *, year(start), month(start)
from your_table

【讨论】:

    【解决方案3】:

    你也可以使用这个逻辑:-

    SELECT *, CONCAT(MONTH(start), '-',  YEAR(start)) AS START
    FROM TABLE_NAME
    

    【讨论】:

    • 它没有给出mm-yyyy 格式。你会得到类似1-2014 而不是01-2014
    猜你喜欢
    • 2012-06-12
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2021-10-14
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多