Lorsque je sélectionne la date dans SQL, elle est renvoyée comme 2011-02-25 21:17:33.933
. Mais je n'ai besoin que de la partie Date, bien sûr 2011-02-25
. Comment puis-je faire ceci?
Lorsque je sélectionne la date dans SQL, elle est renvoyée comme 2011-02-25 21:17:33.933
. Mais je n'ai besoin que de la partie Date, bien sûr 2011-02-25
. Comment puis-je faire ceci?
Réponses:
Je suppose qu'il veut une chaîne.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 ici indique la fonction de conversion que nous passons la date d'entrée dans le format suivant : yyyy-mm-dd hh:mi:ss
.
Pour SQL Server 2008:
Convert(date, getdate())
Veuillez vous référer à https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql
DATE
est nouveau en 2008.
date
type de données, ce qui rend cette solution non valide.
Le plus rapide est datediff
, par exemple
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Mais si vous avez seulement besoin d'utiliser la valeur, vous pouvez ignorer le dateadd, par exemple
select ...
WHERE somedate <= datediff(d, 0, getdate())
où l'expression datediff(d, 0, getdate())
est suffisante pour renvoyer la date du jour sans partie d'heure.
Utilisez CAST (GETDATE () comme date) qui a fonctionné pour moi, simple.
CAST(order_date AS DATE)
CAST(
FLOOR(
CAST( GETDATE() AS FLOAT )
)
AS DATETIME
)
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm
Pour l' ancienne version 2008 :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
Il est un peu tard, mais utilisez la fonction "curdate" ODBC (les crochets angulaires 'fn' est la séquence d'échappement de la fonction ODBC).
SELECT {fn curdate()}
Production: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)
et regardez le plan d'exécution réel (version xml), vous verrez que ce qui est réellement exécuté l'est CONVERT(varchar(10),getdate(),23)
. Ainsi, le type de données de cette fonction ODBC est varchar(10)
ce qui signifie que si vous voulez comparer le résultat avec un, datetime
vous obtiendrez une conversion implicite de varchar(10)
en datetime
sur une chaîne yyyy-mm-dd
. Cette conversion implicite échouera avec set dateformat dmy
.
Vous pouvez également essayer celui-ci.
SELECT CONVERT(DATE, GETDATE(), 120)
Si vous avez besoin de temps pour être des zéros comme 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
L'utilisation est simple:
convert(date, Btch_Time)
Exemple ci-dessous:
Table:
Efft_d Loan_I Loan_Purp_Type_C Orig_LTV Curr_LTV Schd_LTV Un_drwn_Bal_a Btch_Time Strm_I Btch_Ins_I
2014-05-31 200312500 HL03 NULL 1.0000 1.0000 1.0000 2014-06-17 11:10:57.330 1005 24851e0a-53983699-14b4-69109
Select * from helios.dbo.CBA_SRD_Loan where Loan_I in ('200312500') and convert(date, Btch_Time) = '2014-06-17'
C'est trop tard, mais le suivi a bien fonctionné pour moi
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Lorsque le type de données est la date, les heures seraient tronquées
Dans PLSQL, vous pouvez utiliser
to_char(SYSDATE,'dd/mm/yyyy')
Convertissez d'abord la date en float (qui affiche le numérique), puis ROUND
le numérique en 0 décimal, puis convertissez-le en datetime.
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Essaye ça.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))