SELECT GETDATE()

返回时间:2008-09-22 15:24:13.790

我想要没有时间部分的日期部分:2008-09-22 00:00:00.000

我怎么能得到那个?


当前回答

日期(日期和时间字段)和Date_FORMAT(日期和日期,“%Y-%m-%d”)都只返回日期和时间的日期

其他回答

如果您使用的是SQL Server 2012或更高版本,

使用Format()函数。

SQL server已经有多种答案和格式类型。但是,大多数方法都有些模糊,您很难记住格式类型或函数的数字,而不是特定日期格式。这就是为什么在SQL server的下一个版本中有更好的选择。

FORMAT ( value, format [, culture ] )

文化选项非常有用,因为您可以根据您的观众指定日期。

你必须记住d(小模式)和d(长模式)。

1.“d”-短日期模式。

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”-长日期模式。

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)

查询中的更多示例。

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日

如果您需要更多格式,可以转到:

标准日期和时间格式字符串自定义日期和时间格式字符串

日期:

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

时间:

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

您可以对日期部分和日期格式使用以下内容:

DATENAME=>返回表示指定日期的指定日期部分的字符串

DATEADD=>DATEPART()函数用于返回日期/时间的单个部分,例如年、月、日、小时、分钟等。

DATEPART=>返回表示指定日期的指定日期部分的整数。

CONVERT()=>CONVERT函数是将一种数据类型的表达式转换为另一种数据的通用函数。这个CONVERT()函数可用于以不同格式显示日期/时间数据。

哇,让我数一数你能做到这一点的方法。(无意双关)

为了以这种格式获得您想要的结果:

2008-09-22

这里有几个选项。

SELECT CAST(GETDATE() AS DATE) AS 'Date1'
SELECT Date2  = CONVERT(DATE, GETDATE())
SELECT CONVERT(DATE, GETDATE()) AS 'Date3'
SELECT CONVERT(CHAR(10), GETDATE(), 121) AS 'Date4'
SELECT CONVERT(CHAR(10), GETDATE(), 126) AS 'Date5'
SELECT CONVERT(CHAR(10), GETDATE(), 127) AS 'Date6'

所以,我建议你选择一个你满意的方法,并在所有的桌子上使用这种方法。

所有这些选项都以完全相同的格式返回日期。为什么SQL Server有这样的冗余?

我不知道,但他们知道。也许比我聪明的人可以回答这个问题。

希望这对某人有所帮助。

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