舍入毫秒 SQL Server 2000
Rounding milliseconds SQL Server 2000
在 Microsoft SQL Server 2000 中,我有这个数据。
1900-01-01 00:10:10.830
1900-01-01 00:10:10.430
从上面的列中,我想要 select 日期时间并舍入毫秒,以获得以下输出
1900-01-01 00:10:11
1900-01-01 00:10:10
提前致谢
对于 SQL Server 2008 及更高版本,您可以使用 DATETIME2
。 DATETIME2
在 SQL Server 2008 及更高版本中可用 - 有关详细信息,请参阅 here:
SELECT CAST('1900-01-01 00:10:10.830' AS DATETIME2(0));
SELECT CAST('1900-01-01 00:10:10.430' AS DATETIME2(0));
对于SQL服务器的早期版本,例如SQL Server 2000。你可以这样做:
SELECT DATEADD(ms, -DATEPART(ms, DATEADD(ms, 500, CAST('1900-01-01 00:10:10.830' AS DATETIME))) , DATEADD(ms, 500, CAST('1900-01-01 00:10:10.830' AS DATETIME)));
SELECT DATEADD(ms, -DATEPART(ms, DATEADD(ms, 500, CAST('1900-01-01 00:10:10.430' AS DATETIME))) , DATEADD(ms, 500, CAST('1900-01-01 00:10:10.430' AS DATETIME)));
SELECT *
, DateAdd(ss, rounded_second, round_down_seconds) As result
FROM (
SELECT *
, Round(nanoseconds / 1000.0, 0) As rounded_second
FROM (
SELECT the_date
, DatePart(ms, the_date) As nanoseconds
, DateAdd(ss, DateDiff(ss, 0, the_date), 0) As round_down_seconds
FROM (
SELECT '1900-01-01 00:10:10.830' As the_date
UNION ALL
SELECT '1900-01-01 00:10:10.430'
) As x
) As y
) As z
为了尽可能清楚,我将每个步骤都分开了。
如果你想要单衬垫:
SELECT the_date
, DateAdd(ss, Round(DatePart(ms, the_date) / 1000.0, 0), DateAdd(ss, DateDiff(ss, 0, the_date), 0)) As result
FROM (
SELECT '1900-01-01 00:10:10.830' As the_date
UNION ALL
SELECT '1900-01-01 00:10:10.430'
) As x
在 Microsoft SQL Server 2000 中,我有这个数据。
1900-01-01 00:10:10.830
1900-01-01 00:10:10.430
从上面的列中,我想要 select 日期时间并舍入毫秒,以获得以下输出
1900-01-01 00:10:11
1900-01-01 00:10:10
提前致谢
对于 SQL Server 2008 及更高版本,您可以使用 DATETIME2
。 DATETIME2
在 SQL Server 2008 及更高版本中可用 - 有关详细信息,请参阅 here:
SELECT CAST('1900-01-01 00:10:10.830' AS DATETIME2(0));
SELECT CAST('1900-01-01 00:10:10.430' AS DATETIME2(0));
对于SQL服务器的早期版本,例如SQL Server 2000。你可以这样做:
SELECT DATEADD(ms, -DATEPART(ms, DATEADD(ms, 500, CAST('1900-01-01 00:10:10.830' AS DATETIME))) , DATEADD(ms, 500, CAST('1900-01-01 00:10:10.830' AS DATETIME)));
SELECT DATEADD(ms, -DATEPART(ms, DATEADD(ms, 500, CAST('1900-01-01 00:10:10.430' AS DATETIME))) , DATEADD(ms, 500, CAST('1900-01-01 00:10:10.430' AS DATETIME)));
SELECT *
, DateAdd(ss, rounded_second, round_down_seconds) As result
FROM (
SELECT *
, Round(nanoseconds / 1000.0, 0) As rounded_second
FROM (
SELECT the_date
, DatePart(ms, the_date) As nanoseconds
, DateAdd(ss, DateDiff(ss, 0, the_date), 0) As round_down_seconds
FROM (
SELECT '1900-01-01 00:10:10.830' As the_date
UNION ALL
SELECT '1900-01-01 00:10:10.430'
) As x
) As y
) As z
为了尽可能清楚,我将每个步骤都分开了。
如果你想要单衬垫:
SELECT the_date
, DateAdd(ss, Round(DatePart(ms, the_date) / 1000.0, 0), DateAdd(ss, DateDiff(ss, 0, the_date), 0)) As result
FROM (
SELECT '1900-01-01 00:10:10.830' As the_date
UNION ALL
SELECT '1900-01-01 00:10:10.430'
) As x