J'ai juste besoin de sélectionner le premier jour du mois d'une variable datetime donnée.
Je sais que c'est assez facile à faire en utilisant ce type de code:
select CAST(CAST(YEAR(@mydate) AS VARCHAR(4))
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)
Mais ce n'est pas très élégant, et probablement pas très rapide non plus.
Y a-t-il une meilleure manière de faire cela? J'utilise SQL Server 2008.
SELECT EOMONTH(@mydate) AS EndOfMonth
Si quelqu'un se demande, il vous donnera le dernier jour du mois.En plus de toutes les réponses ci-dessus, un moyen basé sur une fonction introduite dans
sql 2012
la source
À partir de SQL Server 2012:
la source
La conversion d'une chaîne (c'est-à-dire "5/1/2009") en datetime est certainement plus lisible mais nous avons trouvé du code il y a quelque temps qui retournerait le premier du mois ...
la source
Requête simple:
la source
C'est probablement assez rapide. Pourquoi ne pas le créer en tant que fonction sql.
la source
Cela fonctionne aussi:
la source
Veuillez utiliser ceci
Pour Server 2012
Avant Server 2012
la source
Premier et dernier jour du mois en cours:
la source
la source
Operand type clash: date is incompatible with int
. Je suppose que c'est parce que vous essayez d'utiliser l'-
opérateur à une date?la source
Il peut s'agir d'une nouvelle fonction, mais vous pouvez également utiliser d'anciennes fonctions:
Si la date dans la variable était par exemple,
'2017-10-29'
elle retournerait une date de'2017-10-01'
https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql?view=sql-server-ver15
la source
Les futurs googleurs, sur MySQL, essayez ceci:
la source
sql-server
question,date_sub
et leinterval
sontmysql
.J'ai utilisé GETDATE () comme date de travail, vous pouvez le remplacer par la date dont vous avez besoin.
Voici comment cela fonctionne: D'abord, nous formaterons la date au format YYYYMMDD ... en tronquant pour ne conserver que les 6 caractères les plus à gauche afin de ne conserver que la partie YYYYMM, puis ajouter '01' comme mois - et le tour est joué! vous avez le premier jour du mois en cours.
BTW, les performances sont excellentes à ce sujet!
la source
Si vous regardez cela aujourd'hui et que vous utilisez SQL Server 2012 ou une version plus récente, vous disposez de la fonction EOMONTH qui facilite les choses:
Vous pouvez modifier GETDATE () avec la variable de date souhaitée.
la source
Ici, nous pouvons utiliser la requête ci-dessous pour la première date du mois et la dernière date du mois.
la source
Si vous utilisez SQL Server 2012 ou supérieur;
la source
Le -2 vous donnera le premier jour du mois dernier. c'est-à-dire que getdate () est le 15/10/18. Vos résultats seraient le 9/1/18. Changez à -1 et vos résultats seraient le 01/10/18. 0 serait le début du mois prochain, 01/11/2018 .. etc etc.
ou
la source
Essayez d'exécuter la requête suivante:
SELECT DATE_ADD(DATE_ADD(LAST_DAY(CURRENT_DATE-INTERVAL 1 DAY),INTERVAL 1 DAY),INTERVAL -1 MONTH)
la source
sélectionnez CONVERTIR (date, DATEADD (jj, - (DATEPART (jj, getdate ()) - 1), getdate ()), 120)
Cette fonction vous fournira une partie de la date de début du mois
la source
.................................................. ...................
Si vous ne voulez pas l'heure, convertissez-la en DATE ou si vous voulez faire passer l'heure à 0:00:00, convertissez-la en DATE puis revenez en DATETIME.
Remplacez GETDATE () par la date souhaitée
la source
Je recommande personnellement le sql ci-dessous car lorsque j'essaie d'utiliser la fonction date dans la clause condition, cela ralentit beaucoup ma vitesse de requête.
de toute façon, n'hésitez pas à essayer cela.
la source
Pas pour rivaliser avec aucun des grands esprits ici, mais une simple suggestion légèrement différente de la réponse acceptée ci-dessus.
la source
J'aime utiliser
FORMAT
, vous pouvez même spécifier une heurela source
Dans Sql Server 2012,
la source
Cette requête devrait très bien fonctionner sur MySQL:
la source
Pour tous ceux qui recherchent toujours une réponse, cela fonctionne comme un charme et supprime tous les fichiers de données. L'horodatage est facultatif, au cas où il aurait besoin d'être spécifié, mais il fonctionne également sans.
la source
Obtenez la première date et la dernière date dans la date que nous transmettons comme paramètre dans SQL
la source
Voici comment vous le feriez dans MySQL:
la source
SELECT FORMAT(GETDATE(), 'yyyy-MM-01')