一种在没有秒的情况下从DateTime值数据中提取的方法

Ghi*_*ita 30 sql sql-server datetime

我有一个sql DateTime(ms sql server),想要在没有秒的情况下提取相同的日期:例如2011-11-22 12:14:58.000成为:2011-11-22 12:14:00.000

我怎样才能做到这一点?我想DATEADD与之结合使用,DATEPART但似乎非常容易出错(除了性能问题)

t-c*_*.dk 55

SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, yourcolumn), 0) FROM yourtable
Run Code Online (Sandbox Code Playgroud)

如果您不希望数据类型之间转换缓慢,这将是有效的.

  • 关于"编辑,最佳解决方案",这样的投射将四舍五入到最接近的分钟.OP希望秒被截断,而不是舍入.显示舍入结果的示例:`DECLARE @myDate DATETIME ='2007-05-08 12:35:32'CELECT CAST(@myDate AS smalldatetime)` (3认同)
  • @Ojen,您绝对正确,发现得很好。我删除了部分答案 (2认同)

Rob*_*Rob 21

试试这个:

 SELECT CAST(CONVERT(CHAR(16), '2011-11-22 12:14',113) AS datetime)
Run Code Online (Sandbox Code Playgroud)

  • CHAR(17)不是CHAR(16),为我工作. (15认同)
  • 这不是一个好的答案.首先,必须使用`CHAR(17)`,否则分钟将是错误的.其次,此方法产生类型转换警告. (5认同)