只需要DateTime中的日期

时间:2009-07-14 11:29:43

标签: sql-server tsql datetime date

我在SQL中有一个DateTime类型的变量。 只需要将Date作为其中的一部分。

请帮助?

10 个答案:

答案 0 :(得分:6)

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

结果是:“2009-07-14 00:00:00.000”

修改:猜测下一个变种更常见:

SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)

因为day模式可以轻松更改为weekmonth模式。当GROUP BY子句按周(按报告)分组时,它非常有用。

答案 1 :(得分:5)

答案 2 :(得分:3)

使用Google

找到了这个

SELECT CONVERT(DATETIME,FLOOR(CONVERT(FLOAT,GETDATE())))

答案 3 :(得分:3)

如果您只需要日期的varchar表示,则可以使用convert函数,例如

select convert(varchar, getDate(), 102) /* 2009.07.14 */

如果您需要日期时间(指定日期的午夜),您可以将其转换回来。

select convert(datetime, convert(varchar, getDate(), 102), 102)

答案 4 :(得分:2)

-- Sneaky CAST/DATEDIFF trick strips off the time to get just the day (midnight)!
CAST(DATEDIFF(d,0,DateField) AS DATETIME) AS DayField

答案 5 :(得分:2)

SQL Server 2008有一个日期数据类型,只存储日期,如果你是这个版本,也许这将是一个更好的数据类型供你使用。但请注意,Date与数据操作的日期时间完全不同。

答案 6 :(得分:1)

SELECT DATEADD(day, DATEDIFF(day, '19900101', CURRENT_TIMESTAMP), '19900101')

一篇非常有用的文章: “本文的目的是解释日期时间类型在SQL Server中的工作方式,包括常见的陷阱和一般建议。”The ultimate guide to the datetime datatypes

请注意,转换为varchar和back(convert(datetime,convert(varchar,getDate(),102),102))要慢得多。

答案 7 :(得分:1)

如果你想要格式'MM / DD / YY',使用“CONVERT(varchar,@ datetimevalue,1)只显示日期。如果你需要日期时间格式,请使用”CONVERT(datetime,CONVERT(varchar) ,@ datetimevalue,1))“。

我在我的SQL博客中创建了一个关于如何检索和显示CONVERT(varchar,..)函数的所有可能格式的条目:

http://jessesql.blogspot.com/2009/04/converting-datetime-values-to-varchar.html

答案 8 :(得分:1)

小贴士: 如果您经常这样做,可以创建一个标量用户定义函数,其中包含您选择的时间剥离逻辑。

警告:SQL Server 2000在ON子句中有一些涉及UDF的痛苦错误。

答案 9 :(得分:0)

datepart(day,datetimevalue)