2012-05-16 81 views
1

我想在我的SQL选择语句中设置我的日期时间的精度。在查询之前,我无法做到这一点。我使用SQL Server 2008的选择语句设置日期时间精度

目前的格式是:

2012-05-14 14:54:45.307 

我想继续下降从日期时间在毫秒和秒给我:

2012-05-14 14:54 

我不确定是否这可以做到,我真的希望如此,谢谢。

+0

你是在做这个演示的目的还是你想运行一个特定的WHERE子句(例如找到我从这个特定的分钟的所有数据)?您对以下答案之一的评论让我感到困惑。另请注意,如果您的列是DATETIME,那么您在上面指定的值不是“当前格式” - 它不是字符串,它在内部存储为两个整数,上述格式正是Management Studio向您显示的格式。 –

回答

1

只是删除它们:

update tablename 
set datecolumn = DATEADD(ms, -DATEPART(ms, datecolumn), datecolumn) 
0

你不能和保持的DateTime铸造。但是,如果你想它格式化显示(VARCHAR),则可以使用CONVERT这样的:

CONVERT(VARCHAR(16),GETDATE(),120) 
+0

所以不可能说从表中选择*从哪里删除时间? – user101010101

+0

在创建记录集之后,您可以使用SQL以外的其他工具完成它,但如果您只是将管理工作室用作应用程序层,那么您正在查看select语句中的格式化修复程序。 –

0
SELECT SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 16) 

或避免声明VARCHAR没有长度:

SELECT SUBSTRING(CONVERT(VARCHAR(16), GETDATE(), 120), 1, 16) 
+0

请不要指定没有长度的'VARCHAR'。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx –

+0

“Madhivanan,如果他正在转换日期,这当然是可以的和整数(除非你知道日期或整数大于30个字符)?他并不是说他在做什么是一个好主意,但与其他方式相比,这个“功能”被滥用,我认为他的例外是相对的安全。” - @AaronBertrand – msmucker0527

+0

当我这样做时,我并不知道30个字符的限制,谢谢你的支持。我同意以这种方式声明变量或表列是不好的做法,并且没有像这样使用它,尽管它可以与整数和日期一起使用,但我也会尽量避开它。好的建议,以及在你的博客上的好评 – msmucker0527

1

貌似这个比其他选项简单(没有字符串转换或日期数学):

SELECT CONVERT(SMALLDATETIME, GETDATE()); 

如果您仍然需要它是一个明确的DATETIME(例如如果你的应用程序将BARF在次类型的变化),你可以把它包装在另一个转换:

SELECT CONVERT(DATETIME, CONVERT(SMALLDATETIME, GETDATE())); 

这仍然会有分钟的间隔,但将是一个正确的DATETIME型与零的休息。