我有一个名为“EventLog”的表,其名称为nDateTime,其类型为int
。在SQL Server 2012中将整数值转换为DateTime
这是表“事件日志” 一些值:
-----------------
| nDateTime |
-----------------
| 978307200 |
-----------------
| 978307219 |
-----------------
| 978513562 |
-----------------
| 978516233 |
-----------------
| 978544196 |
-----------------
| 1450379547 |
-----------------
| 1472299563 |
-----------------
| 1472299581 |
-----------------
| 1472300635 |
-----------------
| 1472300644 |
-----------------
| 1472300673 |
-----------------
我需要DateTime值,我尝试了下面的语句,但我收到这些错误:
测试#1:
SELECT CONVERT(DATETIME, CONVERT(CHAR(8), nDateTime), 103) AS 'Formatted date'
FROM EventLog
错误说:
Conversion failed when converting date and/or time from character string.
测试#2:从here修改:
SELECT CONVERT(DATETIME, nDateTime, 103) AS 'Formatted date'
FROM EventLog
而且测试#3云:
SELECT CAST(nDateTime AS datetime) AS 'Formatted date'
FROM EventLog
的duplicate question不回答我的问题,因为(包括,测试#2和测试#3)产生此错误:
Arithmetic overflow error converting expression to data type datetime.
我承认我从来没有见过像Date这样的价值,为此,我在如何着手中感到困惑。
我的问题是:如何从样本数据中获取有效的DateTime值?
似乎是一个重复:http://stackoverflow.com/questions/7830002/how-to -convert-int-to-date-in-sql-server-2008其中指出:“你不能直接将整数值转换为日期,但你可以先将它转换为日期时间然后再转换为日期类型”...... “'选择强制类型转换(日期时间为40835,日期时间为日期)'”SQL Server 2008 vs 2012版本以外的其他''“ – xQbert
@xQbert我已经检查过这个问题,但出现了”将算术溢出错误转换为数据类型datetime.'。如果我听起来很粗鲁,我的英语不太好_ –
1)“978307200”有9个字符,而不是8个。2)你能否告诉我们数字来自哪里以及它代表什么,例如,从某个日期开始有几毫秒的时间? –