我在SQL中有一个DateTime类型的变量。 只需要将Date作为其中的一部分。
请帮助?
答案 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
模式可以轻松更改为week
或month
模式。当GROUP BY
子句按周(按报告)分组时,它非常有用。
答案 1 :(得分:5)
Stack Overflow之前已经asked and answered了。事实上,它一直被问到:
答案 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)