Tengo una tabla TEST con un DATETIME
campo, como este:
ID NAME DATE
1 TESTING 2014-03-19 20:05:20.000
Lo que necesito es una consulta que devuelva esta fila y cada fila con la fecha 19/03/2014, sin importar la hora. Intenté usar
select * from test where date = '03/19/2014';
Pero no devuelve filas. La única forma de hacerlo funcionar que encontré es proporcionar también la parte de tiempo de la fecha:
select * from test where date = '03/19/2014 20:03:02.000';
fuente
DateDiff()
función, en todas sus variantes, calcula y devuelve el número de límites de fechas que se deben cruzar para pasar de una fecha a otra. Por esoDateDiff(day, '1Jan2016', '31Dec2017 23:259:59')
yDateDiff(day, '31Dec2016 23:259:59', '1Jan2017 ')
ambos regresan1
.Respuesta simple;
select * from test where cast ([date] as date) = '03/19/2014';
fuente
Estoy usando MySQL 5.6 y hay una función DATE para extraer solo la parte de la fecha de la fecha y hora. Entonces, la solución simple a la pregunta es:
select * from test where DATE(date) = '2014-03-19';
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
fuente
select * from test where date between '03/19/2014' and '03/19/2014 23:59:59'
Esta es una respuesta realmente mala . Por dos razones.
1. ¿Qué sucede con tiempos como 23.59.59.700, etc. Hay tiempos mayores a 23:59:59 y al día siguiente.
2. El comportamiento depende del tipo de datos. La consulta se comporta de manera diferente para los tipos datetime / date / datetime2.
Probar con 23: 59: 59.999 lo empeora aún más porque, dependiendo del tipo de fecha, obtienes diferentes redondeos.
select convert (varchar(40),convert(date , '2014-03-19 23:59:59.999')) select convert (varchar(40),convert(datetime , '2014-03-19 23:59:59.999')) select convert (varchar(40),convert(datetime2 , '2014-03-19 23:59:59.999'))
- Para la fecha, el valor es 'picado'. - Para la fecha y hora, el valor se redondea a la fecha siguiente. (Valor más cercano). - Para datetime2, el valor es preciso.
fuente
Esto funciona para mí para el servidor MS SQL:
select * from test where year(date) = 2015 and month(date) = 10 and day(date)= 28 ;
fuente
Prueba esto
select * from test where Convert(varchar, date,111)= '03/19/2014'
fuente
puedes probar esto
select * from test where DATEADD(dd, 0, DATEDIFF(dd, 0, date)) = '03/19/2014';
fuente
Puede utilizar este enfoque que trunca la parte de tiempo:
select * from test where convert(datetime,'03/19/2014',102) = DATEADD(dd, DATEDIFF(dd, 0, date), 0)
fuente
-- Reverse the date format -- this false: select * from test where date = '28/10/2015' -- this true: select * from test where date = '2015/10/28'
fuente
Simplemente use esto en su
WHERE
cláusula.La parte "SubmitDate" a continuación es el nombre de la columna, así que inserte el suyo.
Esto devolverá solo la parte "Año" de los resultados, omitiendo los minutos, etc.
fuente
select *, cast ([col1] as date) <name of the column> from test where date = 'mm/dd/yyyy'
"col1" es el nombre de la columna con fecha y hora
<nombre de la columna> aquí puede cambiar el nombre como desee
fuente
select * from invoice where TRUNC(created_date) <=TRUNC(to_date('04-MAR-18 15:00:00','dd-mon-yy hh24:mi:ss'));
fuente
Existe un problema con las fechas y los idiomas y la forma de evitarlo es pidiendo fechas con este formato AAAAMMDD.
Esta forma a continuación debería ser la más rápida según el enlace a continuación. Revisé SQL Server 2012 y estoy de acuerdo con el enlace.
select * from test where date >= '20141903' AND date < DATEADD(DAY, 1, '20141903');
fuente
utilizar esta
select * from TableName where DateTimeField > date() and DateTimeField < date() + 1
fuente
Prueba esta consulta.
SELECT *,DATE(chat_reg_date) AS is_date,TIME(chat_reg_time) AS is_time FROM chat WHERE chat_inbox_key='$chat_key' ORDER BY is_date DESC, is_time DESC
fuente
select * from invoice where TRANS_DATE_D>= to_date ('20170831115959','YYYYMMDDHH24MISS') and TRANS_DATE_D<= to_date ('20171031115959','YYYYMMDDHH24MISS');
fuente
SELECT * FROM test where DATEPART(year,[TIMESTAMP]) = '2018' and DATEPART(day,[TIMESTAMP]) = '16' and DATEPART(month,[TIMESTAMP]) = '11'
fuente