SELECT GETDATE()

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

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

我怎么能得到那个?


当前回答

以日期格式返回

CAST(订单日期AS日期)

以上代码将在sqlserver2010中运行

它将于2013年12月12日回归

对于SQL Server 2012,请使用以下代码

CONVERT(VARCHAR(10), OrderDate , 111)

其他回答

如果您希望使用CONVERT并获得与所提出的原始问题相同的输出,即yyyy-mm-dd,则使用与前两个答案相同的CONVERT(varchar(10),[SourceDate as dateTime],121)代码,但用虚线转换为yyyy-mm-dd的代码为121。

如果我能马上发表意见,这种格式不属于数据层,这就是为什么在SQL Server 2008引入实际日期部分数据类型之前,如果没有愚蠢的高开销“技巧”是不可能的。在数据层中进行这样的转换是对DBMS开销的巨大浪费,但更重要的是,在执行类似操作的第二秒,基本上已经在内存中创建了孤立数据,我假设您将返回到程序。您不能将其放回另一个3NF+列中,或将其与任何类型的数据进行比较而不进行还原,因此您所做的只是引入了失败点并删除了关系引用。

您应该始终继续并将dateTime数据类型返回给调用程序,在PRESENTATION层中,进行任何必要的调整。一旦在将对象返回给调用者之前进行转换,就会从应用程序中消除引用完整性的所有希望。这将再次阻止UPDATE或DELETE操作,除非您进行某种手动还原,否则在不需要的情况下,再次将数据暴露给人类/code/gremlin错误。

如果需要varchar形式的结果,则应执行

SELECT CONVERT(DATE, GETDATE()) --2014-03-26
SELECT CONVERT(VARCHAR(10), GETDATE(), 111) --2014/03/26

这已经在上文中提到。

如果需要日期和时间格式的结果,应使用以下任何查询

仅选择CONVERT(DATETIME,CONVERT)(VARCHAR(10),GETDATE(),111))作为日期2014-03-26 00:00:00.000选择CONVERT(日期时间,转换(VARCHAR(10),GETDATE(),112))作为仅日期2014-03-26 00:00:00.000声明@仅日期DATETIMESET@OnlyDate=DATEDIFF(DD,0,GETDATE())选择@OnlyDate作为OnlyDate2014-03-26 00:00:00.000

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

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

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

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

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

即使使用古老的MSSQL Server 7.0,这里的代码(由该链接提供)也允许我获得当时所需的任何日期格式:

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)

它产生了这样的输出:

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

试试看:

SELECT CONVERT(VARCHAR(10),GETDATE(),111)

以上语句将您当前的格式转换为YYYY/MM/DD,请参阅此链接以选择您的首选格式。