variable una solo obtener mes fecha español año php mysql

solo - obtener el mes de una variable fecha en php



Seleccione mySQL basado solo en mes y año (10)

Aquí hay una consulta que utilizo y devolverá cada registro dentro de un período como una suma.

Aquí está el código:

$result = mysqli_query($conn,"SELECT emp_nr, SUM(az) FROM az_konto WHERE date BETWEEN ''2018-01-01 00:00:00'' AND ''2018-01-31 23:59:59'' GROUP BY emp_nr ASC"); echo "<table border=''1''> <tr> <th>Mitarbeiter NR</th> <th>Stunden im Monat</th> </tr>"; while($row = mysqli_fetch_array($result)) { $emp_nr=$row[''emp_nr'']; $az=$row[''SUM(az)'']; echo "<tr>"; echo "<td>" . $emp_nr . "</td>"; echo "<td>" . $az . "</td>"; echo "</tr>"; } echo "</table>"; $conn->close(); ?>

Esto enumera cada emp_nr y la suma de las horas mensuales que han acumulado.

Tengo una columna en mySQL DB que tiene algunas filas. Una de esta fila es una FECHA, como esta: 2012-02-01

Lo que quiero lograr es hacer un SELECTO con PHP basado solo en el año y el mes.

La lógica de SELECT será la siguiente:

$q="SELECT * FROM projects WHERE Date="SELECT HERE THE SPECIFIC YEAR AND MONTH"";

El mes y el año específicos se $_POST[''period'']="2012-02"; partir de una variable $_POST , como este $_POST[''period'']="2012-02";

¿Cómo puedo hacerlo?


Aquí, FIND registra por MES y FECHA en mySQL

Aquí está su valor POST $_POST[''period'']="2012-02";

Justo, explota el valor por guión $Period = explode(''-'',$_POST[''period'']);

Obtener matriz a partir del valor de explosión:

Array ( [0] => 2012 [1] => 02 )

Poner valor en la consulta SQL:

SELECT * FROM projects WHERE YEAR(Date) = ''".$Period[0]."'' AND Month(Date) = ''".$Period[0]."'';

Obtenga el resultado por MES y AÑO.


Aqui tienes. Deje la computación en PHP y guarde su DB un poco de trabajo. De esta manera puede hacer un uso efectivo de un índice en la columna Date .

<?php $date = $_POST[''period'']; $start = strtotime($date); $end = strtotime($date . '' 1 month - 1 second''); $query = sprintf( ''SELECT * FROM projects WHERE Date BETWEEN FROM_UNIXTIME(%u) AND FROM_UNIXTIME(%u)'', $start, $end );

EDITAR
Olvidé la conversión de marca de tiempo de Unix.



Puedes hacer así:

$q="SELECT * FROM projects WHERE Year(Date) = ''$year'' and Month(Date) = ''$month''";


Sí, esto funciona, pero solo devuelve una fila, mientras que hay varias filas que recuperar solo con columnas seleccionadas. Al igual que SELECT Título, Fecha FROM mytable DONDE AÑO (Fecha) = 2017 Y MES (Fecha) = 09 devuelve solo una fila.


Si usted tiene

$_POST[''period''] = "2012-02";

Primero, encuentra el primer día del mes:

$first_day = $_POST[''period''] . "-01"

Entonces esta consulta usará un índice en Date si tiene uno:

$q = " SELECT * FROM projects WHERE Date BETWEEN ''$first_day'' AND LAST_DAY( ''$first_day'' ) " ;

También se pueden usar intervalos exclusivos e inclusivos, que funcionan bastante bien (no tiene que preocuparse si la columna es DATE , DATETIME o TIMESTAMP , ni sobre la precisión:

$q = " SELECT * FROM projects WHERE Date >= ''$first_day'' AND Date < ''$first_day'' + INTERVAL 1 MONTH " ;

Advertencia de seguridad:

Debe escaparse correctamente de estos valores o usar declaraciones preparadas. En resumen, utilice el método recomendado actualmente en PHP para evitar problemas de inyección de SQL.


para obtener los valores de mes y año de la columna de fecha

select year(Date) as "year", month(Date) as "month" from Projects


$q="SELECT * FROM projects WHERE YEAR(date) = 2012 AND MONTH(date) = 1;


SELECT * FROM projects WHERE YEAR(Date) = 2011 AND MONTH(Date) = 5