Quando seleciono a data no SQL, ela é retornada como 2011-02-25 21:17:33.933
. Mas eu preciso apenas da parte Data, é isso 2011-02-25
. Como posso fazer isso?
Quando seleciono a data no SQL, ela é retornada como 2011-02-25 21:17:33.933
. Mas eu preciso apenas da parte Data, é isso 2011-02-25
. Como posso fazer isso?
Respostas:
Eu acho que ele quer uma corda.
select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
120 aqui conta a função de conversão que passamos a data de entrada no seguinte formato : yyyy-mm-dd hh:mi:ss
.
Para o SQL Server 2008:
Convert(date, getdate())
Consulte https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql
DATE
é novo em 2008.
date
tipo de dados, portanto, esta solução é inválida.
O mais rápido é datediff
, por exemplo
select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl
Mas se você só precisar usar o valor, poderá pular os dados, por exemplo
select ...
WHERE somedate <= datediff(d, 0, getdate())
onde a expressão datediff(d, 0, getdate())
é suficiente para retornar a data de hoje sem parte do tempo.
Use CAST (GETDATE () como data) que funcionou para mim, simples.
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
Para a versão 2008 mais antiga :
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
É um pouco tarde, mas use a função ODBC "curdate" (colchetes angulares 'fn' é a sequência de escape da função ODBC).
SELECT {fn curdate()}
Resultado: 2013-02-01
SELECT {fn curdate()} FROM (SELECT 1) AS T(X)
e examinar o plano de execução real (versão xml), verá que o que é realmente executado é CONVERT(varchar(10),getdate(),23)
. Portanto, o tipo de dados dessa função ODBC é o varchar(10)
que significa que, se você quiser comparar o resultado com um datetime
, obterá uma conversão implícita de varchar(10)
para datetime
em uma sequência de caracteres yyyy-mm-dd
. Essa conversão implícita falhará set dateformat dmy
.
Você pode tentar este também.
SELECT CONVERT(DATE, GETDATE(), 120)
Caso você precise de um tempo para zeros, como 2018-01-17 00:00:00.000
:
SELECT CONVERT(DATETIME, CONVERT(DATE, GETDATE()), 121)
O uso é simples:
convert(date, Btch_Time)
Exemplo abaixo:
Tabela:
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'
É tarde demais, mas seguir funcionou bem para mim
declare @vCurrentDate date=getutcdate()
select @vCurrentDate
Quando o tipo de dados é data, as horas seriam truncadas
No PLSQL você pode usar
to_char(SYSDATE,'dd/mm/yyyy')
Primeiro Converta a data em flutuante (que exibe o numérico), depois ROUND
o numérico em 0 casas decimais, depois converta-o em data e hora.
convert(datetime,round(convert(float,orderdate,101),0) ,101)
Tente isso.
SELECT DATEADD(DD, 0, DATEDIFF(DD, 0, GETDATE()))