Vik*_*nte 0 sql sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2
我需要将值转换为SQL Server DateTime.
数据如下所示:
我试过了
CONVERT(DATE, '20161021-12:55:16.000', 102)
Run Code Online (Sandbox Code Playgroud)
它会抛出一个错误.
我可以在SQL中获得帮助,将这些样本转换为有效的日期时间吗?
这些值也是UTC.
我需要将它们转换为EST.
感谢您的帮助.
如果你对自己的格式保持一致有信心,那么你可以把它拿出去(我已经将日期时间用于说明目的);
CONVERT(DATETIME, REPLACE('20161021-12:55:16.000','-',' '), 102)
Run Code Online (Sandbox Code Playgroud)
结果
2016-10-21 12:55:16.000
Run Code Online (Sandbox Code Playgroud)
对于转换,您可以转换为日期时间,取消您的工作时间,然后转换为您想要的日期格式;
CONVERT(DATETIME, DATEADD(hh,-5,CONVERT(DATETIME,REPLACE('20161021-12:55:16.000','-',' '))), 102)
Run Code Online (Sandbox Code Playgroud)
结果;
2016-10-21 07:55:16.000
Run Code Online (Sandbox Code Playgroud)
为了更好地了解这一点,请在凌晨5点之前设置它,然后您将获得前一天;
CONVERT(DATETIME, DATEADD(hh,-5,CONVERT(DATETIME,REPLACE('20161021-04:55:16.000','-',' '))), 102)
Run Code Online (Sandbox Code Playgroud)
结果
2016-10-20 23:55:16.000
Run Code Online (Sandbox Code Playgroud)
作为参考,在我的测试系统上,您不需要转换为102,这是默认值.
DATEADD(hh,-5,CONVERT(DATETIME,REPLACE('20161021-04:55:16.000','-',' ')))
Run Code Online (Sandbox Code Playgroud)
为了获得时间差,动态地做这样的事情;
DATEADD(hh,DATEDIFF(hh,GETUTCDATE(),GETDATE()),CONVERT(DATETIME,REPLACE('20161021-04:55:16.000','-',' ')))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |