Eu tenho uma tabela TEST com um DATETIME
campo, assim:
ID NAME DATE
1 TESTING 2014-03-19 20:05:20.000
O que preciso é de uma consulta retornando essa linha e cada linha com data 19/03/2014, não importa que hora seja. Tentei usar
select * from test where date = '03/19/2014';
Mas não retorna nenhuma linha. A única maneira de fazer funcionar que encontrei é fornecer também a parte da hora da data:
select * from test where date = '03/19/2014 20:03:02.000';
fonte
DateDiff()
função, em todas as suas variantes, calcula e retorna o número de limites de datas que devem ser ultrapassados para ir de uma data para a outra. É por issoDateDiff(day, '1Jan2016', '31Dec2017 23:259:59')
eDateDiff(day, '31Dec2016 23:259:59', '1Jan2017 ')
quer voltar1
.Resposta simples;
select * from test where cast ([date] as date) = '03/19/2014';
fonte
Estou usando o MySQL 5.6 e há uma função DATE para extrair apenas a parte da data da data e hora. Portanto, a solução simples para a questão é -
select * from test where DATE(date) = '2014-03-19';
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
fonte
select * from test where date between '03/19/2014' and '03/19/2014 23:59:59'
Esta é uma resposta muito ruim . Por duas razões.
1. O que acontece com horários como 23.59.59.700 etc. Há tempos maiores que 23:59:59 e no dia seguinte.
2. O comportamento depende do tipo de dados. A consulta se comporta de maneira diferente para os tipos datetime / date / datetime2.
Testar com 23: 59: 59.999 torna tudo ainda pior porque, dependendo do tipo de dados, você obtém arredondamentos diferentes.
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 a data, o valor é 'cortado'. - Para datetime, o valor é arredondado para a próxima data. (Valor mais próximo). - Para datetime2, o valor é preciso.
fonte
Isso funciona para mim para o servidor MS SQL:
select * from test where year(date) = 2015 and month(date) = 10 and day(date)= 28 ;
fonte
Tente isto
select * from test where Convert(varchar, date,111)= '03/19/2014'
fonte
você pode tentar isso
select * from test where DATEADD(dd, 0, DATEDIFF(dd, 0, date)) = '03/19/2014';
fonte
Você pode usar esta abordagem que trunca a parte do tempo:
select * from test where convert(datetime,'03/19/2014',102) = DATEADD(dd, DATEDIFF(dd, 0, date), 0)
fonte
-- Reverse the date format -- this false: select * from test where date = '28/10/2015' -- this true: select * from test where date = '2015/10/28'
fonte
Simplesmente use isso em sua
WHERE
cláusula.A parte "SubmitDate" abaixo é o nome da coluna, portanto, insira o seu próprio.
Isso retornará apenas a parte "Ano" dos resultados, omitindo os minutos etc.
fonte
select *, cast ([col1] as date) <name of the column> from test where date = 'mm/dd/yyyy'
"col1" é o nome da coluna com data e hora
<nome da coluna> aqui você pode alterar o nome como desejar
fonte
select * from invoice where TRUNC(created_date) <=TRUNC(to_date('04-MAR-18 15:00:00','dd-mon-yy hh24:mi:ss'));
fonte
Existe um problema com datas e idiomas e a forma de evitá-lo é pedir datas com este formato AAAAMMDD.
Esta forma abaixo deve ser a mais rápida de acordo com o link abaixo. Eu verifiquei no SQL Server 2012 e concordo com o link.
select * from test where date >= '20141903' AND date < DATEADD(DAY, 1, '20141903');
fonte
usa isto
select * from TableName where DateTimeField > date() and DateTimeField < date() + 1
fonte
Teste 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
fonte
select * from invoice where TRANS_DATE_D>= to_date ('20170831115959','YYYYMMDDHH24MISS') and TRANS_DATE_D<= to_date ('20171031115959','YYYYMMDDHH24MISS');
fonte
SELECT * FROM test where DATEPART(year,[TIMESTAMP]) = '2018' and DATEPART(day,[TIMESTAMP]) = '16' and DATEPART(month,[TIMESTAMP]) = '11'
fonte