我得到了一些格式为yyyymmddMilliseconds的时间数据表。例如,20100218000051234.如何将其转换为DateTime类型?在SQL Server 2008中。如何将yyyymmddMilliseconds转换为SQL Server中的datetime?
1
A
回答
0
有趣的是,如果你使用的是SQL Server 2005和之前的例子,你将无法获得前因为DateTime值被四舍五入至.000,.003或.007的增量,因此您需要执行精度。因此,51.234变为51.233。但是,如果使用DateTime2,则可以获得所需的精度:
declare @x varchar(50)
set @x='20100218000051234'
Select DateAdd(ms, Cast(Substring(@x, 9, 9) As int), Cast(Substring(@x, 1, 8) As datetime))
Select DateAdd(ms, Cast(Substring(@x, 9, 9) As int), Cast(Substring(@x, 1, 8) As datetime2))
Results:
2010-02-18 00:00:51.233
2010-02-18 00:00:51.2340000
1
您需要使用convert
和substring
的组合。有一个很好的例子,你可以从http://www.sqlusa.com/bestpractices/datetimeconversion/推断。
您还可以找到有关T-SQL字符串操作功能here的文档。
6
试试这个:
declare @x varchar(50)
set @x='20100218000051234'
select DATEADD(ms,CONVERT(int,RIGHT(@x,9)),CONVERT(datetime,LEFT(@x,8)))
输出
-----------------------
2010-02-18 00:00:51.233
(1 row(s) affected)
2
在你上面的例子,目前尚不清楚是否20100218000051234代表
Year: 2010 Month: 02 (February Day: 18 Milliseconds: 000051234
或者:
Year: 2010 Month: 02 (February Day: 18 Hours: 00 Minutes: 00 Seconds: 51 Milliseconds: 234
0
0
作为替代(有用的,如果你也有其他多个“信息分析”的事,你会发现,这是您可能希望使用SQLCLR功能
using System;
using System.Data.SqlTypes;
using System.Globalization;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlDateTime Parse(SqlString s)
{
if (s.IsNull)
return SqlDateTime.Null;
return new SqlDateTime(DateTime.ParseExact(s.Value,"yyyyMMddhhmmssfff",CultureInfo.InvariantCulture));
}
};
相关问题
- 1. 如何将DateTime字符串转换为SQL Server中的DateTime
- 2. 在SQL Server中将varchar转换为datetime
- 3. 在SQL Server中将varchar转换为datetime
- 4. 将时代转换为DateTime SQL Server
- 5. SQL Server将字符串转换为datetime
- 6. SQL Server 2008将varchar转换为datetime
- 7. 如何在SQL Server中将datetimeoffset(7)转换为datetime。
- 8. 如何将DateTime的SQL Server XML类型值(xsi:nil)转换为空
- 9. 将DateTime转换为适用于SQL Server的DateTime?
- 10. SQL - 将varchar转换为datetime
- 11. 将INT转换为DATETIME(SQL)
- 12. 将datetime转换为SQL中的日期
- 13. 在sql server中将时区的datetime转换为GMT
- 14. SQL Server将datetime转换为查询中的int
- 15. 在SQL Server中将nvarchar ISO-8601日期转换为datetime
- 16. 在SQL Server 2012中将整数值转换为DateTime
- 17. 在SQL Server中将字符串转换为DATETIME
- 18. 在SQL Server中将datetime列转换为datetime2列?
- 19. 如何转换DateTime?为DateTime
- 20. 如何正确地将SQL datetime转换为C#datetime?
- 21. 为什么jTDS无法将SQL Server datetime转换为java.sql.Timestamp?
- 22. 将SQL Server varchar转换为用于算术的datetime
- 23. 如何在SQL Server中将“dd/mm/yyyy”字符串转换为datetime?
- 24. 如何将DATETIME转换为T-SQL中的FILETIME值?
- 25. 如何为varchar“DDMMYYYY HH:MM:SS”转换成DATETIME在SQL Server
- 26. 将SQL Server转换为Oracle
- 27. 将ORA_HASH转换为SQL Server
- 28. 如何将Integer8的值转换为DateTime?
- 29. SQL Server查询(查看)将字符串转换为DateTime
- 30. SQL Server - 将13位数字转换为datetime
不是问题标题指定** yyyymmddMilliseconds **的格式? – 2010-02-18 19:51:18
KM:你是对的 - 它似乎确定最后9个字符代表“毫秒”,但由于它似乎是一个不寻常的格式字符串,我认为最好仔细检查一下 – 2010-02-18 20:26:47