Après-midi,Mois renvoie une valeur incorrecte à partir de la date
J'ai un problème avec un serveur SQL que je pourrais faire avec de l'aide. Lorsque j'exécute une instruction select avec une plage de dates dans la zone où elle renvoie des lignes de la plage de dates incorrecte.
par exemple. Si j'exécute ce qui suit
select * from theTable where startDate between '2016-09-01 00:00:00' and '2016-09-08 23:59:59'
j'attendre les lignes où la startDate
se situe entre le 1er et le 8 Septembre, ce que je veux réellement est des lignes avec un startDate
entre le 9 Janvier et Août 9.
J'ai vérifié la langue que j'ai installé sur le datebase en utilisant:
select * from sys.syslanguages order by name where name = @@language
Ce retour britannique
retours UserOptions DBCC
textsize 2147483647
language British
dateformat dmy
datefirst 1
lock_timeout -1
quoted_identifier SET
arithabort SET
ansi_null_dflt_on SET
ansi_warnings SET
ansi_padding SET
ansi_nulls SET
concat_null_yields_null SET
isolation level read committed
J'ai vérifié la langue par défaut pour la connectez-vous et c'est aussi britannique.
Lorsque j'exécute print month('2016-09-01 00:00:00')
Il retourne 1 et non 9. À moins que je ne me trompe la date et l'heure ci-dessus devraient être ODBC yyyy-mm-dd hh:mi:ss(24h)
canonique.
Pourquoi est-ce qu'il imprime 1 au lieu de 9 et, plus important encore, comment le corriger?
impression @@version
retourne
Microsoft SQL Server 2005 - 9.00.5057.00 (X64)
Mar 25 2011 13:33:31
Copyright (c) 1988-2005 Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
Merci pour votre aide. Si cela a déjà été répondu pouvez-vous me pointer dessus, seulement je ne peux pas trouver la réponse.
Utilisez un format non ambigu ('YYYYMMDD'): 'où startDate> =' 20160901 'et startDate <' 20160909'' – Lamak