Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 没有时间的日期_Sql_Sql Server 2005 - Fatal编程技术网

Sql 没有时间的日期

Sql 没有时间的日期,sql,sql-server-2005,Sql,Sql Server 2005,我正在使用SQLServer2005 我有一个名为datetime类型的purchase\u time列。如何选择包含时间部分的此列-仅包含日期 谢谢 巴里 编辑: 获取日期时间并在第一个空间通过Python将其拆分是安全的,还是这种格式取决于语言环境 在SQL Server 2008中,您可以使用新添加的日期类型: 更新: 在SQL 2008之前的版本中,我使用以下解决方案解决此问题: select convert(datetime, convert(int, convert(float, p

我正在使用SQLServer2005

我有一个名为datetime类型的purchase\u time列。如何选择包含时间部分的此列-仅包含日期

谢谢

巴里

编辑:
获取日期时间并在第一个空间通过Python将其拆分是安全的,还是这种格式取决于语言环境

在SQL Server 2008中,您可以使用新添加的日期类型:

更新:

在SQL 2008之前的版本中,我使用以下解决方案解决此问题:

select convert(datetime, convert(int, convert(float, purchase_time)))
from TableName

在SQL Server 2008中,可以使用新添加的日期类型:

更新:

在SQL 2008之前的版本中,我使用以下解决方案解决此问题:

select convert(datetime, convert(int, convert(float, purchase_time)))
from TableName

在<2008版本中,根据对一些答案的其他评论,我相信您正在运行,最有效的方法是将其保持为datetime类型,并使用date math避免字符串转换

SELECT DATEADD(DAY, DATEDIFF(DAY, '20000101', purchase_time), '20000101') 
  FROM dbo.table;
编辑

如果您希望日期仅用于显示目的,而不是用于计算或分组,那么最好在客户端处理。在SQL中,您只需说:

SELECT dt = CONVERT(CHAR(10), purchase_time, 120)
  FROM dbo.table;

在<2008版本中,根据对一些答案的其他评论,我相信您正在运行,最有效的方法是将其保持为datetime类型,并使用date math避免字符串转换

SELECT DATEADD(DAY, DATEDIFF(DAY, '20000101', purchase_time), '20000101') 
  FROM dbo.table;
编辑

如果您希望日期仅用于显示目的,而不是用于计算或分组,那么最好在客户端处理。在SQL中,您只需说:

SELECT dt = CONVERT(CHAR(10), purchase_time, 120)
  FROM dbo.table;


这将比使用convert to char/varchar来缩短测试时间要有效得多;我有。如果需要对结果执行日期计算或其他比较,则它会否定隐式转换或其他包装转换。类型date不是已定义的系统类型。@Baz我确信它在SQL 2008中可用;我刚测试过it@Baz然后我怀疑您可能正在使用ManagementStudio for SQL Server 2008,但正在连接到SQL Server 2005或更低版本的服务器。SELECT@@VERSION说什么?@Baz您能检查一下您的版本吗?这比使用convert to char/varchar来缩短测试时间要有效得多;我有。如果需要对结果执行日期计算或其他比较,则它会否定隐式转换或其他包装转换。类型date不是已定义的系统类型。@Baz我确信它在SQL 2008中可用;我刚测试过it@Baz然后我怀疑您可能正在使用ManagementStudio for SQL Server 2008,但正在连接到SQL Server 2005或更低版本的服务器。SELECT@@VERSION说什么?@Baz您能检查一下您的版本吗?谢谢!这给了我:2012-02-22 00:00:00.000,但我不想要00:00:00.000部分。@Baz请查看更新。只需确保将计算和表示作为单独的概念。让SQL Server来清理要显示的数据并不总是最好或最有效的。谢谢Aaron。如果我使用Python在客户端执行此操作,如果我在第一个找到的空间上拆分并获取结果的前半部分,是否可以假定我将具有日期部分?或者,这可能因国家而异,等等?这可能因地区设置而异。如果您想确定,可以在SQL中完成。很抱歉,我不熟悉Python,但我怀疑有一些方法可以格式化日期/时间值,就像在C、VB等中一样,而不考虑区域设置。是的@w0lf,这是真的,实际上这就是我的意思,我只是在外部转换中包装了我以前的代码。从这个角度讲,我们称之为懒惰-谢谢这给了我:2012-02-22 00:00:00.000,但我不想要00:00:00.000部分。@Baz请查看更新。只需确保将计算和表示作为单独的概念。让SQL Server来清理要显示的数据并不总是最好或最有效的。谢谢Aaron。如果我使用Python在客户端执行此操作,如果我在第一个找到的空间上拆分并获取结果的前半部分,是否可以假定我将具有日期部分?或者,这可能因国家而异,等等?这可能因地区设置而异。如果您想确定,可以在SQL中完成。很抱歉,我不熟悉Python,但我怀疑有一些方法可以格式化日期/时间值,就像在C、VB等中一样,而不考虑区域设置。是的@w0lf,这是真的,实际上这就是我的意思,我只是在外部转换中包装了我以前的代码。从这个角度讲,我们称之为懒惰-