【问题标题】:mysql extract year from date formatmysql 从日期格式中提取年份
【发布时间】:2012-01-03 13:08:23
【问题描述】:

我需要一个 mysql 查询来从我数据库中的表中的以下日期格式中提取年份。

例如:

        subdateshow
      ----------------      
        01/17/2009
        01/17/2009
        01/17/2009
        01/17/2009
        01/17/2009

以下查询无效

select YEAR ( subdateshow ) from table 

列类型是 varchar。有没有办法解决这个问题?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    由于您的 subdateshow 是一个 VARCHAR 列,而不是正确的 DATE, TIMESTAMP or DATETIME column,因此您必须先将字符串转换为日期,然后才能在其上使用 YEAR:

    SELECT YEAR(STR_TO_DATE(subdateshow, "%m/%d/%Y")) from table
    

    http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

    【讨论】:

    【解决方案2】:
    SELECT EXTRACT(YEAR FROM subdateshow) FROM tbl_name;
    

    【讨论】:

      【解决方案3】:

      你可以试试这个:

      SELECT EXTRACT(YEAR FROM field) FROM table WHERE id=1
      

      【讨论】:

        【解决方案4】:

        这应该可行:

        SELECT YEAR(STR_TO_DATE(subdateshow, '%m/%d/%Y')) FROM table;
        

        例如:

        SELECT YEAR(STR_TO_DATE('01/17/2009', '%m/%d/%Y'));  /* shows "2009" */
        

        【讨论】:

          【解决方案5】:

          试试这个代码:

          SELECT DATE_FORMAT(FROM_UNIXTIME(field), '%Y') FROM table
          

          【讨论】:

            【解决方案6】:

            如果日期格式一致,这应该可以工作:

            select SUBSTRING_INDEX( subdateshow,"/",-1 ) from table 
            

            【讨论】:

              【解决方案7】:

              尝试:

              SELECT EXTRACT(YEAR FROM (STR_TO_DATE(subdateshow, '%d/%m/%Y')));
              

              【讨论】:

                【解决方案8】:

                试试这个代码:

                SELECT YEAR( str_to_date( subdateshow, '%m/%d/%Y' ) ) AS Mydate

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2016-08-02
                  • 1970-01-01
                  • 2016-11-29
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-05-24
                  相关资源
                  最近更新 更多