我在SQL Server 2005中针对日期时间列运行选择。我只能从此日期时间列中选择日期?
答案 0 :(得分:7)
最好的方法是:
SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0)
这是因为在内部,SQL Server将所有日期存储为两个整数,其中第一个是自1900年1月1日起的****天数***。(第二个是时间部分,存储为自午夜以来的秒数。(SmallDateTime
秒的秒数,DateTime
的秒数)
使用上面的表达式更好,因为它避免了所有转换,直接读取和访问日期内部表示中的第一个整数,而不必执行任何处理...上面表达式中的两个零(代表1900年1月1日),也是直接使用w / o处理或转换,因为它们与日期1月19日的SQL服务器内部表示完全一致(作为整数)..
*注意。实际上,您必须跨越日期边界(中午)的数量才能从一个日期到另一个日期。
答案 1 :(得分:5)
是,使用转换功能。例如:
select getdate(), convert(varchar(10),getdate(),120)
结果:
----------------------- ----------
2010-05-21 13:43:23.117 2010-05-21
答案 2 :(得分:1)
您可以使用以下功能:
day(date)
month(date)
year(date)
答案 3 :(得分:1)
Datepart()函数也可能有用:
http://msdn.microsoft.com/en-us/library/ms174420(SQL.90).aspx
答案 4 :(得分:0)
DECLARE @dToday DATETIME
SET @dToday = CONVERT(nvarchar(20), GETDATE(), 101)
SELECT @dToday AS Today
今天上午12:00返回:'2010-05-21 00:00:00.000' 然后,您可以根据需要在查询中使用@dToday变量