yyyymmdd Comment retourner uniquement la date à partir d'un type de données SQL Server DateTime




sql server format date yyyymmdd (24)

SI vous voulez utiliser CONVERT et obtenir la même sortie que dans la question originale posée, c'est-à-dire, aaaa-mm-jj alors utilisez CONVERT(varchar(10),[SourceDate as dateTime],121) même code que les réponses précédentes , mais le code à convertir en aaaa-mm-jj avec des tirets est 121.

Si je peux obtenir une seconde sur ma tribune, ce type de formatage n'appartient pas au niveau des données , et c'est pourquoi cela n'a pas été possible sans des «astuces» stupides jusqu'à SQL Server 2008 lorsque les types de données datepart sont introduit. Faire de telles conversions dans le niveau des données est une énorme perte de charge sur votre SGBD, mais plus important encore, la seconde que vous faites quelque chose comme ça, vous avez essentiellement créé des données orphelines en mémoire que je suppose que vous retournerez ensuite à un programme. Vous ne pouvez pas le replacer dans une autre colonne 3NF + ou le comparer à tout ce qui a été typé sans revenir à la version précédente. Tout ce que vous avez fait est d'introduire des points d'échec et de supprimer la référence relationnelle.

Vous devez TOUJOURS aller de l'avant et renvoyer votre type de données dateTime au programme appelant et dans le niveau PRESENTATION, faire les ajustements nécessaires. Dès que vous allez convertir des choses avant de les renvoyer à l'appelant, vous supprimez tout espoir d'intégrité référentielle de l'application. Cela empêcherait une opération UPDATE ou DELETE, à nouveau, sauf si vous effectuez une sorte de réversion manuelle, ce qui expose à nouveau vos données à l'erreur humaine / code / gremlin lorsque cela n'est pas nécessaire.

SELECT GETDATE()

Retours: 2008-09-22 15:24:13.790

Je veux cette partie de date sans la partie de temps: 2008-09-22 00:00:00.000

Comment puis-je l'obtenir?


SELECT * FROM tablename WHERE CAST ([my_date_time_var] AS DATE)= '8/5/2015'

Sur SQL Server 2000

CAST(
(
    STR( YEAR( GETDATE() ) ) + '/' +
    STR( MONTH( GETDATE() ) ) + '/' +
    STR( DAY( GETDATE() ) )
)
AS DATETIME)

Je pense que cela fonctionnerait dans votre cas:

CONVERT(VARCHAR(10),Person.DateOfBirth,111) AS BirthDate
//here date is obtained as 1990/09/25

Pour le retour au format de date

CAST (OrderDate AS date)

Le code ci-dessus fonctionnera dans SQL Server 2010

Il reviendra comme 12/12/2013

Pour SQL Server 2012, utilisez le code ci-dessous

CONVERT(VARCHAR(10), OrderDate , 111)

Si vous affectez les résultats à une colonne ou à une variable, attribuez-lui le type DATE et la conversion est implicite.

DECLARE @Date DATE = GETDATE()   

SELECT @Date   --> 2017-05-03

Cela manquait dans toutes les réponses, peut-être pas le plus efficace mais très facile à écrire et à comprendre, pas de style nécessaire, pas de fonctions de date complexes.

SELECT CONVERT(DATETIME,CONVERT(DATE,((GETDATE()))))

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),103) --21/09/2011

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),101) --09/21/2011

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),111) --2011/09/21

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),107) --Sep 21, 2011

En utilisant FLOOR () - il suffit de couper la partie temps.

SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)

Date (champ de la date et de l'heure) et DATE_FORMAT (date et heure, '% Y-% m-% d') les deux renvois ne datent que de la date et de l'heure


SELECT CONVERT(datetime, CONVERT(varchar, GETDATE(), 101))

SQLServer 2008 a maintenant un type de données 'date' qui contient uniquement une date sans composant heure. Toute personne utilisant SQL Server 2008 et les versions ultérieures peut effectuer les opérations suivantes:

SELECT CONVERT(date, GETDATE())

DECLARE @yourdate DATETIME = '11/1/2014 12:25pm'    
SELECT CONVERT(DATE, @yourdate)

Si vous avez besoin de résultat dans le type de données varchar, vous devez passer par

SELECT CONVERT(DATE, GETDATE()) --2014-03-26
SELECT CONVERT(VARCHAR(10), GETDATE(), 111) --2014/03/26

qui est déjà mentionné ci-dessus

Si vous avez besoin de résultat dans le format de la date et de l'heure, vous devez passer par l'une des requêtes ci-dessous

1) SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10), GETDATE(), 111)) tant que OnlyDate --2014-03-26 00: 00: 00.000

2) SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10), GETDATE(), 112)) tant que OnlyDate --2014-03-26 00: 00: 00.000

3)

 DECLARE  @OnlyDate DATETIME
   SET @OnlyDate = DATEDIFF(DD, 0, GETDATE())
   SELECT @OnlyDate AS OnlyDate

--2014-03-26 00: 00: 00.000


SELECT CONVERT(VARCHAR(10),GETDATE(),111)

pourquoi n'utilisez-vous pas DATE_FORMAT (votre_datetiem_column, '% d-% m-% Y')?

EX: select DATE_FORMAT( some_datetime_column, '%d-%m-%Y' ) from table_name

vous pouvez changer la séquence de m, d et année en réarrangeant la partie '%d-%m-%Y'


Même en utilisant l'ancien MSSQL Server 7.0, le code ici (avec la permission de ce link ) m'a permis d'obtenir le format de date que je cherchais à l'époque:

PRINT '1) Date/time in format MON DD YYYY HH:MI AM (OR PM): ' + CONVERT(CHAR(19),GETDATE())  
PRINT '2) Date/time in format MM-DD-YY: ' + CONVERT(CHAR(8),GETDATE(),10)  
PRINT '3) Date/time in format MM-DD-YYYY: ' + CONVERT(CHAR(10),GETDATE(),110) 
PRINT '4) Date/time in format DD MON YYYY: ' + CONVERT(CHAR(11),GETDATE(),106)
PRINT '5) Date/time in format DD MON YY: ' + CONVERT(CHAR(9),GETDATE(),6) 
PRINT '6) Date/time in format DD MON YYYY HH:MM:SS:MMM(24H): ' + CONVERT(CHAR(24),GETDATE(),113)

Il a produit cette sortie:

1) Date/time in format MON DD YYYY HH:MI AM (OR PM): Feb 27 2015  1:14PM
2) Date/time in format MM-DD-YY: 02-27-15
3) Date/time in format MM-DD-YYYY: 02-27-2015
4) Date/time in format DD MON YYYY: 27 Feb 2015
5) Date/time in format DD MON YY: 27 Feb 15
6) Date/time in format DD MON YYYY HH:MM:SS:MMM(24H): 27 Feb 2015 13:14:46:630

Je suis favorable à ce qui suit qui n'a pas été mentionné:

DATEFROMPARTS(DATEPART(yyyy, @mydatetime), DATEPART(mm, @mydatetime), DATEPART(dd, @mydatetime))

Il ne se soucie pas non plus de local ou fait une double conversion - bien que chaque 'datepart' fasse probablement des maths. Donc, il se peut que ce soit un peu plus lent que la méthode de datediff, mais pour moi c'est beaucoup plus clair. Surtout quand je veux regrouper juste l'année et le mois (mettre le jour à 1).



SELECT DATEADD(DD, DATEDIFF(DD, 0, GETDATE()), 0)

SELECT DATEADD(DAY, 0, DATEDIFF(DAY,0, GETDATE()))

SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 101))

Edit: Les deux premières méthodes sont essentiellement les mêmes et surpassent la méthode convert to varchar.


Rendez-vous amoureux:

SELECT CONVERT(date, GETDATE())
SELECT CAST(GETDATE() as date)

Temps:

SELECT CONVERT(time , GETDATE() , 114)
SELECT CAST(GETDATE() as time)

Si vous utilisez SQL 2008 et plus:

select cast(getdate() as date)

Pour obtenir le résultat indiqué, j'utilise la commande suivante.

SELECT CONVERT(DATETIME,CONVERT(DATE,GETDATE()))

Je holpe c'est utile.


À partir de SQL Server 2012, vous pouvez le faire:

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd 00:00:00.000')





datetime