我想在我的SQL选择语句中设置我的日期时间的精度。在查询之前,我无法做到这一点。我使用SQL Server 2008的选择语句设置日期时间精度
目前的格式是:
2012-05-14 14:54:45.307
我想继续下降从日期时间在毫秒和秒给我:
2012-05-14 14:54
我不确定是否这可以做到,我真的希望如此,谢谢。
我想在我的SQL选择语句中设置我的日期时间的精度。在查询之前,我无法做到这一点。我使用SQL Server 2008的选择语句设置日期时间精度
目前的格式是:
2012-05-14 14:54:45.307
我想继续下降从日期时间在毫秒和秒给我:
2012-05-14 14:54
我不确定是否这可以做到,我真的希望如此,谢谢。
只是删除它们:
update tablename
set datecolumn = DATEADD(ms, -DATEPART(ms, datecolumn), datecolumn)
你不能和保持的DateTime铸造。但是,如果你想它格式化显示(VARCHAR),则可以使用CONVERT这样的:
CONVERT(VARCHAR(16),GETDATE(),120)
所以不可能说从表中选择*从哪里删除时间? – user101010101
在创建记录集之后,您可以使用SQL以外的其他工具完成它,但如果您只是将管理工作室用作应用程序层,那么您正在查看select语句中的格式化修复程序。 –
SELECT SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 16)
或避免声明VARCHAR没有长度:
SELECT SUBSTRING(CONVERT(VARCHAR(16), GETDATE(), 120), 1, 16)
请不要指定没有长度的'VARCHAR'。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx –
“Madhivanan,如果他正在转换日期,这当然是可以的和整数(除非你知道日期或整数大于30个字符)?他并不是说他在做什么是一个好主意,但与其他方式相比,这个“功能”被滥用,我认为他的例外是相对的安全。” - @AaronBertrand – msmucker0527
当我这样做时,我并不知道30个字符的限制,谢谢你的支持。我同意以这种方式声明变量或表列是不好的做法,并且没有像这样使用它,尽管它可以与整数和日期一起使用,但我也会尽量避开它。好的建议,以及在你的博客上的好评 – msmucker0527
貌似这个比其他选项简单(没有字符串转换或日期数学):
SELECT CONVERT(SMALLDATETIME, GETDATE());
如果您仍然需要它是一个明确的DATETIME(例如如果你的应用程序将BARF在次类型的变化),你可以把它包装在另一个转换:
SELECT CONVERT(DATETIME, CONVERT(SMALLDATETIME, GETDATE()));
这仍然会有分钟的间隔,但将是一个正确的DATETIME型与零的休息。
你是在做这个演示的目的还是你想运行一个特定的WHERE子句(例如找到我从这个特定的分钟的所有数据)?您对以下答案之一的评论让我感到困惑。另请注意,如果您的列是DATETIME,那么您在上面指定的值不是“当前格式” - 它不是字符串,它在内部存储为两个整数,上述格式正是Management Studio向您显示的格式。 –