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        2011101

Se você quiser mais formatos, você pode ir para:

  1. Strings de formato de data e hora padrão
  2. Cadeias de formato de data e hora personalizadas

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 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.





datetime