相关疑难解决方法(0)

从XML转换为SQL Server datetime时,毫秒错误

我遇到了与将日期时间从XML(ISO8601:yyyy-mm-ddThh:mi:ss.mmm)转换为SQL Server 2005日期时间相关的问题.问题是转换毫秒是错误的.我已经使用nvarchar中的convert(datetime,MyDate,126)测试了隐式和显式转换,结果是相同的:

Original                Result
2009-10-29T15:43:12.990 2009-10-29 15:43:12.990
2009-10-29T15:43:12.991 2009-10-29 15:43:12.990
2009-10-29T15:43:12.992 2009-10-29 15:43:12.993
2009-10-29T15:43:12.993 2009-10-29 15:43:12.993
2009-10-29T15:43:12.994 2009-10-29 15:43:12.993
2009-10-29T15:43:12.995 2009-10-29 15:43:12.997
2009-10-29T15:43:12.996 2009-10-29 15:43:12.997
2009-10-29T15:43:12.997 2009-10-29 15:43:12.997
2009-10-29T15:43:12.998 2009-10-29 15:43:12.997
2009-10-29T15:43:12.999 2009-10-29 15:43:13.000
Run Code Online (Sandbox Code Playgroud)

我的非广泛测试显示最后一位数字是0,3或7.这是一个简单的舍入问题吗?毫秒精度很重要,失去/获得一个或两个不是一个选择.

xml sql-server sql-server-2005

11
推荐指数
2
解决办法
4040
查看次数

在SqlServer中插入的DateTime更改值

当我插入这些值

09/30/2013 05:04:56.599 
09/30/2013 05:04:56.599
09/30/2013 05:04:56.599
09/30/2013 05:04:57.082
Run Code Online (Sandbox Code Playgroud)

在SqlServer数据库中,毫秒值以奇怪的方式变化

2013-09-30 05:04:56.600 
2013-09-30 05:04:56.600 
2013-09-30 05:04:56.600 
2013-09-30 05:04:57.083
Run Code Online (Sandbox Code Playgroud)

怎么了 ?

编辑:相关代码:

        com = new SqlCommand();
        com.Connection = con;
        com.CommandText = @"INSERT INTO [AuthSourceTimings]
                                   ([FileName]
                                   ,[JobID]
                                   ,[JobCreationTime]
                                   ,[JobSendTime]
                                   ,[JobAckTime]
                                   ,[JobDoneTime])
                             VALUES
                                   (@FileName
                                   ,@JobID
                                   ,@JobCreationTime
                                   ,@JobSendTime
                                   ,@JobAckTime
                                   ,@JobDoneTime)
                            ";

        com.Parameters.AddWithValue("@FileName", fileName);
        com.Parameters.AddWithValue("@JobID", t.JobID);

        com.Parameters.AddWithValue("@JobCreationTime", t.JobCreationTime == DateTime.MinValue ? (object)DBNull.Value : (object)t.JobCreationTime);
        com.Parameters.AddWithValue("@JobSendTime", t.JobSendTime == DateTime.MinValue ? (object)DBNull.Value : (object)t.JobSendTime);
        com.Parameters.AddWithValue("@JobAckTime", t.JobAcknowledgementTime == DateTime.MinValue ? (object)DBNull.Value : (object)t.JobAcknowledgementTime);
        com.Parameters.AddWithValue("@JobDoneTime", t.JobCompletionTime == DateTime.MinValue ? …
Run Code Online (Sandbox Code Playgroud)

c# sql-server datetime

7
推荐指数
2
解决办法
305
查看次数

将日期时间(以毫秒为单位)插入SQL Server表问题

我发现了一些我认为与SQL中的时间分辨率有关的东西.这是我用过的一个例子:

CREATE TABLE #table
(
    DTstamp DATETIME NOT NULL
)

INSERT INTO #table VALUES ('1 apr 2016 15:01:02:129')

SELECT DTstamp FROM #table

DROP TABLE #table
Run Code Online (Sandbox Code Playgroud)

SELECT在这种情况下,SQL Server Management Studio中显示的结果为0.001:

2016-04-01 15:01:02.130
Run Code Online (Sandbox Code Playgroud)

尝试多个值时,显示的结果通常在插入时间的0.003秒内.有谁知道差异来自哪里?

SQL版本:

Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) 
Oct 20 2015 15:36:27 
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Run Code Online (Sandbox Code Playgroud)

sql time datetime sql-insert

5
推荐指数
1
解决办法
9188
查看次数

为什么SQL将确切的日期时间更改为一个刻度

DECLARE @dateEnd datetime
SET @dateEnd = '2014-11-30T23:59:59.999'
SELECT @dateEnd
Run Code Online (Sandbox Code Playgroud)

为什么我得到结果: 2014-12-01 00:00:00.000

我想为SELECT条件使用变量:

where [MyDate] between @dateStart and @dateEnd
Run Code Online (Sandbox Code Playgroud)

这是另一个问题,但相关.我希望包含第一个数据点(dataStart),并从所选数据范围中排除第二个(dataEnd).怎么做?

sql sql-server

4
推荐指数
1
解决办法
171
查看次数

IBM Data Server Client v9.7fp5的日期时间字段溢出

使用EntityFramework v4.1和IBM Data Server Client v9.7fp5,DB首先基于具有DATE列的预定义DB2表生成代码.在代码生成期间,DB2 DATE列将映射到.​​NET DateTime数据类型.

尝试INSERT连续时,收到以下错误

错误[22008] [IBM] CLI0114E日期时间字段溢出.SQLSTATE = 22008

这是有道理的,因为.NET没有DATE数据类型,只有DATETIME和那个属性会有更多的数据,那么DB2 DATE列会期望.

问题是

  1. 为什么.NET基本代码不能使用ToShortDateString()自动转换并提供DB2期望的内容?

  2. 在.NET将SQL事务提交给DB2之前,可以使用哪些方法覆盖.NET基本逻辑并在应用程序代码中转换值?

任何帮助或反馈将不胜感激.谢谢!

.net db2 datetime odbc

2
推荐指数
1
解决办法
2772
查看次数

MS SQL Server从转换时间开始下降1毫秒

以下查询:

select convert(datetime, '2016-06-20 7:22:52.728')

给我:

2016-06-20 07:22:52.727

在SQL Server v12.0.4100.1中.

无论我放置几毫秒的值,结果总是少于1毫秒.

我错过了什么或这是一个错误吗?

sql-server

2
推荐指数
1
解决办法
56
查看次数

已过去的一天的百分比

我们正在针对目标测量实际值.我们有一天(24小时)的总体目标,但我们需要计算任何给定时间的目标来衡量我们目前的进展情况.

显然,我们需要将总体目标与给定时间进行比例分配; 因此,如果是正午,那么渐进目标是每日目标的一半,而在早上6点,渐进目标将是每日目标的四分之一 - 依此类推.

在SQL中执行此操作的最有效方法是什么?有一个明显的解决方案,但它不是很漂亮 - 我希望能够DATETIME在一次操作中将a 转换为总的毫秒数.

sql sql-server sql-server-2008

1
推荐指数
1
解决办法
476
查看次数

SQL Server:日期时间比较,忽略几毫秒

我注意到,如果有两个日期时间被认为是相等的

2010-12-31 15:13:48.000 
Run Code Online (Sandbox Code Playgroud)

和另外一个

2010-12-31 15:13:48.001.
Run Code Online (Sandbox Code Playgroud)

我在开始时认为它是向上或向下舍入到最接近的整秒,但事实证明

2010-12-31 15:13:48.002 
Run Code Online (Sandbox Code Playgroud)

正确记录差异.

知道为什么会这样吗?

sql sql-server datetime

1
推荐指数
1
解决办法
1690
查看次数

标签 统计

sql-server ×6

datetime ×4

sql ×4

.net ×1

c# ×1

db2 ×1

odbc ×1

sql-insert ×1

sql-server-2005 ×1

sql-server-2008 ×1

time ×1

xml ×1