如何从T-Sql中的datetime中提取日期?

时间:2010-05-21 20:39:01

标签: sql-server-2005 tsql

我在SQL Server 2005中针对日期时间列运行选择。我只能从此日期时间列中选择日期?

5 个答案:

答案 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)

您可以使用以下功能:

  1. day(date)
  2. month(date)
  3. 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变量