无日期的日期
问题描述:
我正在使用SQL Server 2005.无日期的日期
我有一个名为purchase_time的类型为datetime的列。如何选择时间部分的这一列 - 只是日期。
感谢,
巴里
编辑: 难道是安全的,得到的日期时间,并通过Python的第一空间分割,或者是这种格式依赖于语言环境?
答
在版本< 2008年(其中,基于其他意见,一些问题的答案,我相信你正在运行),最有效的方法是将它保留为日期时间类型并使用日期数学来避免字符串转换。
SELECT DATEADD(DAY, DATEDIFF(DAY, '20000101', purchase_time), '20000101')
FROM dbo.table;
编辑
如果希望只为显示目的的日期,而不是计算或分组,这可能是最好的客户端处理。你可以简单地说这样做在SQL:
SELECT dt = CONVERT(CHAR(10), purchase_time, 120)
FROM dbo.table;
答
在SQL Server 2008中您可以使用新添加的date
类型:
select convert(date, purchase_time) from TableName
更新:
在之前的版本SQL 2008,我用这个问题的以下解决方案:
select convert(datetime, convert(int, convert(float, purchase_time)))
from TableName
感谢一个可能的解决方案!这给了我:2012-02-22 00:00:00.000但我不想要00:00:00.000部分。 – Baz 2012-02-22 18:52:30
+1不错 - 这必须比我的转换x3解决方案更好。 – GolfWolf 2012-02-22 18:56:27
@Baz请参阅更新。只要确保你保持计算和演示为单独的概念。让SQL Server“清理”显示数据的肮脏工作并不总是最好或最有效的。 – 2012-02-22 18:59:10