today - sql server date d
Como retornar apenas a data de um tipo de dados DateTime do SQL Server (20)
SELECT GETDATE()
Retorna: 2008-09-22 15:24:13.790
Eu quero essa data sem parte do tempo: 2008-09-22 00:00:00.000
Como posso conseguir isso?
Se você estiver usando o SQL Server 2012 ou versões anteriores ,
Use a função Format()
.
Já existem várias respostas e tipos de formatação para o SQL Server. Mas a maioria dos métodos é um tanto ambígua e seria difícil para você lembrar os números para o tipo de formato ou funções com relação ao Formato de Data Específico. É por isso que nas próximas versões do SQL Server há melhor opção.
FORMAT ( value, format [, culture ] )
A opção Cultura é muito útil, pois você pode especificar a data de acordo com seus espectadores.
Você tem que lembrar d (para padrões pequenos) e D (para padrões longos).
1. "d" - padrão de data abreviada.
2009-06-15T13:45:30 -> 6/15/2009 (en-US)
2009-06-15T13:45:30 -> 15/06/2009 (fr-FR)
2009-06-15T13:45:30 -> 2009/06/15 (ja-JP)
2. "D" - padrão de data longa.
2009-06-15T13:45:30 -> Monday, June 15, 2009 (en-US)
2009-06-15T13:45:30 -> 15 июня 2009 г. (ru-RU)
2009-06-15T13:45:30 -> Montag, 15. Juni 2009 (de-DE)
Mais exemplos na consulta.
DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result';
SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';
US English Result Great Britain English Result German Result Simplified Chinese (PRC) Result
---------------- ----------------------------- ------------- -------------------------------------
10/1/2011 01/10/2011 01.10.2011 2011/10/1
US English Result Great Britain English Result German Result Chinese (Simplified PRC) Result
---------------------------- ----------------------------- ----------------------------- ---------------------------------------
Saturday, October 01, 2011 01 October 2011 Samstag, 1. Oktober 2011 2011年10月1日
Se você quiser mais formatos, você pode ir para:
A partir do SQL SERVER 2012, você pode fazer isso:
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd 00:00:00.000')
Encontro:
SELECT CONVERT(date, GETDATE()) SELECT CAST(GETDATE() as date)
Tempo:
SELECT CONVERT(time , GETDATE() , 114) SELECT CAST(GETDATE() as time)
Eu acho que isso funcionaria no seu caso:
CONVERT(VARCHAR(10),Person.DateOfBirth,111) AS BirthDate
//here date is obtained as 1990/09/25
Isso estava faltando em todas as respostas, pode não ser o mais eficiente, mas muito fácil de escrever e entender, sem estilo necessário, sem funções de data complexas.
SELECT CONVERT(DATETIME,CONVERT(DATE,((GETDATE()))))
Mesmo usando o antigo MSSQL Server 7.0, o código aqui (cortesia deste link ) me permitiu obter o formato de data que eu estava procurando no momento:
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)
Produziu esta saída:
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
No SQL Server 2000
CAST(
(
STR( YEAR( GETDATE() ) ) + '/' +
STR( MONTH( GETDATE() ) ) + '/' +
STR( DAY( GETDATE() ) )
)
AS DATETIME)
O SQL Server 2008 agora tem um tipo de dados 'data' que contém apenas uma data sem componente de hora. Qualquer pessoa usando o SQL Server 2008 e além pode fazer o seguinte:
SELECT CONVERT(date, GETDATE())
Para obter o resultado indicado, eu uso o seguinte comando.
SELECT CONVERT(DATETIME,CONVERT(DATE,GETDATE()))
Eu holpe é útil.
Por que você não usa DATE_FORMAT (your_datetiem_column, '% d-% m-% Y')?
EX: select DATE_FORMAT( some_datetime_column, '%d-%m-%Y' ) from table_name
você pode alterar a sequência de m, d e ano rearranjando a parte '%d-%m-%Y'
Se você estiver atribuindo os resultados a uma coluna ou variável, atribua a ela o tipo DATE e a conversão seja implícita.
DECLARE @Date DATE = GETDATE()
SELECT @Date --> 2017-05-03
Se você precisa resultar em tipo de dados varchar você deve passar por
SELECT CONVERT(DATE, GETDATE()) --2014-03-26
SELECT CONVERT(VARCHAR(10), GETDATE(), 111) --2014/03/26
que já foi mencionado acima
Se você precisar resultar em formato de data e hora, você deve passar por qualquer uma das consultas abaixo
1) SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10), GETDATE(), 111))
como OnlyDate --2014-03-26 00: 00: 00.000
2) SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10), GETDATE(), 112))
como 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
Simplesmente você pode fazer assim:
SELECT CONVERT(date, getdate())
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, @your_date))
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Saídas como:
2008-09-22 00:00:00.000
Ou simplesmente faça assim:
SELECT CONVERT (DATE, GETDATE()) 'Date Part Only'
Resultado:
Date Part Only
--------------
2013-07-14
Tente isto:
SELECT CONVERT(VARCHAR(10),GETDATE(),111)
A declaração acima converte o seu formato atual para YYYY/MM/DD
, por favor, consulte este link para escolher o seu formato preferido.
Você pode usar a função CONVERT
para retornar apenas a data. Veja o link (s) abaixo:
Manipulação de data e hora no SQL Server 2000
A sintaxe para usar a função de conversão é:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Você pode usar os seguintes itens para data e formatar a data:
DATENAME => Retorna uma cadeia de caracteres que representa a parte da data especificada da data especificada
DATEADD => A função DATEPART()
é usada para retornar uma única parte de uma data / hora, como ano, mês, dia, hora, minuto etc.
DATEPART => Retorna um inteiro que representa a parte da data especificada da data especificada.
CONVERT()
=> A função CONVERT()
é uma função geral que converte uma expressão de um tipo de dados em outro. A função CONVERT()
pode ser usada para exibir dados de data / hora em diferentes formatos.
Para retorno no formato de data
CAST (OrderDate AS date)
O código acima funcionará no sql server 2010
Ele retornará como 12/12/2013
Para o SQL Server 2012, use o código abaixo
CONVERT(VARCHAR(10), OrderDate , 111)
DECLARE @yourdate DATETIME = '11/1/2014 12:25pm'
SELECT CONVERT(DATE, @yourdate)
SELECT CONVERT(datetime, CONVERT(varchar, GETDATE(), 101))
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: Os dois primeiros métodos são essencialmente os mesmos, e executam o método convert to varchar.