我在varchar变量中格式化了数据“2009-07-17T00:00:00-05:00”。如何使用查询或TSQL将此数据转换为MS SQL服务器中的日期时间字段?SQL日期时间值
SQL日期时间值
回答
如果你是SQL Server 2008上,您可以使用datetimeoffset
类型:
select cast('2009-07-17T00:00:00-05:00' as datetimeoffset)
既然你是2005年,datetimeoffset
数据类型不适用于你。您应该决定是否要分开保存时区信息。如果你只是想在datetime
部分,只是从字符串中去除时区部分,将它转换为datetime
:
select cast(left('2009-07-17T00:00:00-5:00', 19) as datetime)
不知何故,它不工作。显示“类型datetimeoffset不是已定义的系统类型”。我该怎么办? – THEn 2009-10-12 21:54:11
你正在使用什么SQL Server版本? 'datetimeoffset'在2008年是新的。 – 2009-10-12 21:55:16
Microsoft SQL Server 2005 - 9.00.1406.00(X64)Mar 3 2007 19:53:24 Copyright(c)1988-2005 Windows NT 5.2上的Microsoft Corporation企业版(64位) 3790:Service Pack 2) – THEn 2009-10-12 21:56:03
演员为DATETIME将无法正常工作,但该格式是一个有效的XML日期时间格式,所以您可以首先通过XML类型路由演员阵容:
declare @d varchar(50);
select @d = '2009-07-17T00:00:00-05:00';
select x.value(N'.', N'datetime') from (select cast(@d as xml) as x) as t;
是的。这些数据来自XML文件。我使用SELECT [StartDate] FROM OPENXML(@iTree,'/ List/DailyUpdate',2)WITH([STARTDATE] varchar(50))在SQL中以何种方式执行?我试过datetime它不工作... – THEn 2009-10-12 22:09:24
你可以使用XML方法,而不是OPENXML? OPENXML是一个恐龙...只要说'SELECT xmlfield.value(N'(/ List/Daily/Update)[1]',N'datetime')FROM table'。使用OPENXML,您需要使用WITH语法来指定返回模式,并将StartDate映射到datetime:'SELECT StartDate FROM OPENXML(...)WITH(StartDate DATETIME)'。 – 2009-10-12 22:17:16
此外,答案中的查询不断显示“从字符串转换日期时间时转换失败。”任何想法 ? – THEn 2009-10-12 22:46:18
- 1. SQL日期时间间隔
- 2. Sql Ansi管理日期时间值
- 3. SQL Server日期时间NULL值
- 4. 日期时间在2个日期时间值之间的行SQL
- 5. SQL:另一日期/时间的24小时内的最小日期/时间值
- 6. sql日期时间与日期值比较
- 7. SQL查询:从SQL日期时间查找“日”值
- 8. SQL - 如何更换与其他日期时间日期时间价值?
- 9. SQL日期/时间操作
- 10. SQL组由日期时间
- 11. SQL - 最后日期时间
- 12. 整数日期时间SQL
- 13. SQL Server日期时间ss.mmmZ
- 14. SQL日期时间数据
- 15. SQL日期时间问题
- 16. SQL PHP日期时间
- 17. 日期时间类型SQL
- 18. SQL日期时间格式
- 19. SQL转换日期时间
- 20. SQL日期时间查询
- 21. SQL日期时间性能
- 22. VB和SQL日期时间
- 23. SQL日期时间转换
- 24. SQL日期时间溢出
- 25. 转换日期时间SQL
- 26. SQL-PHP日期时间
- 27. SQL日期时间平均
- 28. ORDERBY月(日期时间)SQL
- 29. 的Java SQL日期时间
- 30. SQL日期时间转换
什么是最后的'-05:00'?某种形式的毫秒? – dotjoe 2009-10-12 21:52:40
dotjoe:这是时区。 – 2009-10-12 21:53:58
是所有的字段'like'%-05:00''?可能要使用字符串函数将其转换为常规日期时间。 – dotjoe 2009-10-12 22:00:52