J'ai une table appelée Transaction. L'un des noms de colonnes est Time
, le type de données est TimeStamp
. Donc datatables ressemblent à ceci 2015-01-14 23:22:11.000
.
Maintenant, je veux faire une search par Date dans where clause dans ce format DD/MM/YYYY
par exemple
select * FROM Transaction WHERE Date='25/12/2016' // DD/MM/YYYY
Merci
Votre question n'est pas complètement claire, mais il semble que vous ayez besoin de comparer datatables de date au format DD/MM/YYYY
rapport à une colonne d'horodatage dans votre tableau. Une option consiste à utiliser la fonction CONVERT
pour convertir l'input et votre colonne d'horodatage en un format DATETIME
commun, puis effectuer la comparaison.
SELECT * FROM Transaction WHERE CONVERT(DATETIME, DATEDIFF(DAY, 0, TIME)) = CONVERT(DATETIME, '25/12/2016', 103)
Cela renverra tous les loggings dont les composants de date sont '2016-12-25'
. Notez que les deux côtés de la comparaison auront un composant time défini sur minuit ce jour-là.
select * FROM Transaction WHERE Date=CONVERT(NVARCHAR(50), '25/12/2016', 103) DD/MM/YYYY
Utilisez le format canonique (AAAA-MM-JJ) dans les colonnes de date:
SELECT * FROM Transaction WHERE Date=convert(datetime, '2016-12-25')
Vous pouvez également utiliser des plages horaires au format canonique AAAA-MM-JJ HH: MI: SS:
SELECT * FROM Transaction WHERE Date BETWEEN convert(datetime, '2016-12-25 00:00:00') AND convert(datetime, '2016-12-25 23:59:59')
Vous devez passer la date au format dd/mm/yyyy
, prendre le type de données de paramètre comme varchar
et convertir la date comme dans l'instruction SQL suivante
SELECT CONVERT(varchar(25),CreateDate,103) as CreateDate, [UserID],[FirstName]+' '+[LastName] AS 'Name',[NomineeName],[City],[UserDocument] FROM [dbo].[UserMaster] WHERE CONVERT(varchar(25),[CreateDate],103) between convert(varchar(25),@datefrom,103) and convert(varchar(25),@dateto,103)