복붙노트

[SQL] SELECT DATEPART 의해 행 ()

SQL

SELECT DATEPART 의해 행 ()

나는 기록을 한 달의있는 데이터베이스에서 행을 얻을 필요가있다. 나는이 SELECT를 시도했다 :

$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");

데이터베이스에서 11 월에 날짜가 행의 많은입니다,하지만 난 어떤 결과를 얻을 수 없습니다. 캔 사람의 도움 나? 감사!

해결법

  1. ==============================

    1.MySQL은 더 DATEPART 기능이 없습니다. 대신 사용 MONTH (date_column) 또는 EXTRACT (date_column FROM MONTH).

    MySQL은 더 DATEPART 기능이 없습니다. 대신 사용 MONTH (date_column) 또는 EXTRACT (date_column FROM MONTH).

  2. ==============================

    2.

        SELECT * FROM my_table WHERE MONTH(date_column)=11
    
  3. ==============================

    3.당신이 date_column 인덱스 및 성능에 대한 당신이 관심이 있다면이 칼럼을 통해 기능을 적용하지하는 것이 좋습니다. (그것은 또한 올해 포함 렸기 때문에, 당신이 질문을 정확하게이 솔루션이 수행이 anwsers하지 않도록주의)

    당신이 date_column 인덱스 및 성능에 대한 당신이 관심이 있다면이 칼럼을 통해 기능을 적용하지하는 것이 좋습니다. (그것은 또한 올해 포함 렸기 때문에, 당신이 질문을 정확하게이 솔루션이 수행이 anwsers하지 않도록주의)

    -- For mysql specific:
    SELECT * FROM my_table
    WHERE date_column >= '2012-11-01' 
      and date_column < '2012-11-01' + INTERVAL 1 MONTH
    

    (MySQL의 바이올린)

    -- For tsql specific:
    SELECT * FROM my_table
    WHERE date_column >= '2012-11-01'
      and date_column < DATEADD(month,1,'2012-11-01')
    

    (전체 바이올린)

  4. ==============================

    4.당신의 DATEPART는 MYSQL에서 작동하지 않는 경우에 당신은 사용할 수 있습니다 :

    당신의 DATEPART는 MYSQL에서 작동하지 않는 경우에 당신은 사용할 수 있습니다 :

    SELECT * FROM MyTable WHERE MONTH(joinningDate)=MONTH(NOW())-1 and YEAR(joinningDate)=YEAR(NOW());
    

    그것은 지난 달을 MyTable에 삽입 한 모든 레코드를 반환합니다.

  5. from https://stackoverflow.com/questions/13402012/select-row-by-datepart by cc-by-sa and MIT license