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

Tys*_*ero 6 t-sql sql-server-2005

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

Cha*_*ana 7

最好的方法是:

   SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0) 
Run Code Online (Sandbox Code Playgroud)

这是因为在内部,SQL Server将所有日期存储为两个整数,其中第一个是自1900年1月1日以来的****天数***.(第二个是时间部分,存储为数字从午夜开始的秒数.(SmallDateTimes的秒数或s的milleseconds DateTime)
使用上面的表达式更好,因为它避免了所有转换,直接读取和访问日期内部表示中的第一个整数,而不必执行任何处理...两个零在上面的表达式(代表1900年1月1日)中,也直接使用w/o处理或转换,因为它们与日期1月19日的SQL服务器内部表示完全一致(作为整数).

*注意.实际上,您必须跨越日期边界(中午)的数量才能从一个日期到另一个日期.


Noa*_*oah 6

是的,通过使用转换功能.例如:

select getdate(), convert(varchar(10),getdate(),120)
Run Code Online (Sandbox Code Playgroud)

结果:

----------------------- ----------
2010-05-21 13:43:23.117 2010-05-21
Run Code Online (Sandbox Code Playgroud)