Tys*_*ero 6 t-sql sql-server-2005
我在SQL Server 2005中针对日期时间列运行选择.我只能从此日期时间列中选择日期?
最好的方法是:
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服务器内部表示完全一致(作为整数).
*注意.实际上,您必须跨越日期边界(中午)的数量才能从一个日期到另一个日期.
是的,通过使用转换功能.例如:
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)