J'ai un TEST de table avec un DATETIME
champ, comme ceci:
ID NAME DATE
1 TESTING 2014-03-19 20:05:20.000
Ce dont j'ai besoin d'une requête renvoyant cette ligne et chaque ligne avec la date 19/03/2014, quelle que soit l'heure. J'ai essayé d'utiliser
select * from test where date = '03/19/2014';
Mais il ne renvoie aucune ligne. La seule façon de le faire fonctionner que j'ai trouvée est de fournir également la partie heure de la date:
select * from test where date = '03/19/2014 20:03:02.000';
la source
DateDiff()
fonction, dans toutes ses variantes, calcule et renvoie le nombre de frontières de date à franchir pour passer d'une date à l'autre. C'est pourquoiDateDiff(day, '1Jan2016', '31Dec2017 23:259:59')
et lesDateDiff(day, '31Dec2016 23:259:59', '1Jan2017 ')
deux reviennent1
.Réponse simple;
select * from test where cast ([date] as date) = '03/19/2014';
la source
J'utilise MySQL 5.6 et il existe une fonction DATE pour extraire uniquement la partie date de l'heure de la date. La solution simple à la question est donc -
select * from test where DATE(date) = '2014-03-19';
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html
la source
select * from test where date between '03/19/2014' and '03/19/2014 23:59:59'
C'est une très mauvaise réponse. Pour deux raisons.
1. Que se passe-t-il avec des heures comme 23.59.59.700 etc. Il y a des heures plus grandes que 23:59:59 et le jour suivant.
2. Le comportement dépend du type de données. La requête se comporte différemment pour les types datetime / date / datetime2.
Tester avec 23: 59: 59.999 rend les choses encore pires car selon le type de données, vous obtenez des arrondis différents.
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'))
- Pour la date, la valeur est «hachée». - Pour datetime, la valeur est arrondie à la date suivante. (Valeur la plus proche). - Pour datetime2, la valeur est précise.
la source
Cela fonctionne pour moi pour le serveur MS SQL:
select * from test where year(date) = 2015 and month(date) = 10 and day(date)= 28 ;
la source
Essaye ça
select * from test where Convert(varchar, date,111)= '03/19/2014'
la source
tu peux essayer ça
select * from test where DATEADD(dd, 0, DATEDIFF(dd, 0, date)) = '03/19/2014';
la source
Vous pouvez utiliser cette approche qui tronque la partie temporelle:
select * from test where convert(datetime,'03/19/2014',102) = DATEADD(dd, DATEDIFF(dd, 0, date), 0)
la source
-- Reverse the date format -- this false: select * from test where date = '28/10/2015' -- this true: select * from test where date = '2015/10/28'
la source
Utilisez simplement ceci dans votre
WHERE
clause.La partie «SubmitDate» ci-dessous est le nom de la colonne, alors insérez le vôtre.
Cela renverra uniquement la partie "Année" des résultats, en omettant les minutes, etc.
la source
select *, cast ([col1] as date) <name of the column> from test where date = 'mm/dd/yyyy'
"col1" est le nom de la colonne avec la date et l'heure
<nom de la colonne> ici vous pouvez changer le nom comme vous le souhaitez
la source
select * from invoice where TRUNC(created_date) <=TRUNC(to_date('04-MAR-18 15:00:00','dd-mon-yy hh24:mi:ss'));
la source
Il y a un problème avec les dates et les langues et la façon de l'éviter est de demander des dates avec ce format AAAAMMJJ.
Cette manière ci-dessous devrait être la plus rapide selon le lien ci-dessous. J'ai vérifié dans SQL Server 2012 et j'accepte le lien.
select * from test where date >= '20141903' AND date < DATEADD(DAY, 1, '20141903');
la source
utilisez ceci
select * from TableName where DateTimeField > date() and DateTimeField < date() + 1
la source
Testez cette requête.
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
la source
select * from invoice where TRANS_DATE_D>= to_date ('20170831115959','YYYYMMDDHH24MISS') and TRANS_DATE_D<= to_date ('20171031115959','YYYYMMDDHH24MISS');
la source
SELECT * FROM test where DATEPART(year,[TIMESTAMP]) = '2018' and DATEPART(day,[TIMESTAMP]) = '16' and DATEPART(month,[TIMESTAMP]) = '11'
la source