我在SQL DateTime类型的变量。 只需要有它的日期部分。
请帮忙?
我在SQL DateTime类型的变量。 只需要有它的日期部分。
请帮忙?
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
子句中应该GROUP BY月(报告)的一周。
这已被提问和回答堆栈溢出之前。 事实上,它已经被问了个遍:
发现这个使用谷歌
SELECT CONVERT(DATETIME,FLOOR(CONVERT(FLOAT,GETDATE())))
如果你只需要日期的VARCHAR表示,你可以使用转换函数,如
select convert(varchar, getDate(), 102) /* 2009.07.14 */
如果你需要一个日期时间(在指定日期午夜),你可以将其转换回。
select convert(datetime, convert(varchar, getDate(), 102), 102)
-- Sneaky CAST/DATEDIFF trick strips off the time to get just the day (midnight)!
CAST(DATEDIFF(d,0,DateField) AS DATETIME) AS DayField
SQL Server 2008中有一个日期数据类型,它的店刚日期,如果你是inthis版本,也许这将是一个更好datat类型供您使用。 虽然被警告,日期不完全一样的日期时间进行数据处理工作。
SELECT DATEADD(day, DATEDIFF(day, '19900101', CURRENT_TIMESTAMP), '19900101')
一个非常有用的文章:“这篇文章的目的是解释时间类型在SQL Server中如何工作的,包括常见的陷阱和一般性建议。” 最终引导到datetime数据类型
请注意,转换为varchar和背面(转换(日期时间,转换(VARCHAR,GETDATE(),102),102))是慢得多。
如果你想要的格式 'MM / DD / YY',使用 “CONVERT(VARCHAR,@datetimevalue,1)只显示日期。如果你需要它的日期时间格式,请使用” 转换(日期时间,CONVERT(VARCHAR,@datetimevalue ,1))”。
我创建了我的SQL博客有关如何检索和显示CONVERT(VARCHAR,..)函数的所有可能格式的条目:
http://jessesql.blogspot.com/2009/04/converting-datetime-values-to-varchar.html
小贴士:如果你发现自己经常这样做,你可以创建一个包含您所选择的时间剥离逻辑标量用户定义的函数。
警告:SQL Server 2000中有一个涉及UDF的一些痛苦的错误ON
条款。
DATEPART(天,datetimevalue)