【问题标题】:How to convert this MS SQL numeric value to a date [closed]如何将此 MS SQL 数值转换为日期 [关闭]
【发布时间】:2017-03-20 11:46:39
【问题描述】:

应该是一个简单的转换,但演员和转换失败了。

我要转换的值是:1509180600 其他示例为 1572256200、5150938920

我有大量记录和许多字段,其中日期已像这样存储。系统正在更换,这意味着幸运的是,这个问题会解决。但是在擦除它们之前需要知道这些值是什么!

【问题讨论】:

  • 你能解释一下这些数字的含义吗?我们应该如何知道如何将一些随机数转换为日期?
  • 可能如果我们知道这些示例意味着与哪些日期相关。
  • 数字字段是保修开始日期、结束日期、购买日期、服务日期。对于资产库存。抱歉,你说得太含糊了。
  • 我们不是在问日期是从什么开始的......我们是在问他们是什么格式的?如何将 0123456789 转换为日期?它是自公元 1500 年等神奇开始日期以来的秒数吗?前 2 位数字代表一个月中的某一天,接下来是一年中的月份,等等?看看我在说什么?不知道什么他们的意思,没有办法回答这个问题。
  • 原始数据以整数形式存储在表中。创建表时发生了一些奇怪的事情。服务器中的数据库名称只是'Mdb',一半的表名以'usp'为前缀......做得很好!

标签: sql-server date type-conversion


【解决方案1】:

这可能是一个 Unix 时间戳。您可以通过将秒数添加到 1970-01-01 来转换它:

select dateadd(second, col, '1970-01-01')
. . .

【讨论】:

  • 完美运行。谢谢!
  • mmh,我使用了与您相同的推理,但我被阻止了,因为 SELECT dateadd(s,1509180600,'19700101 05:00:00:000') 给出的值(未来)为 2017 -10-28 13:50,值 5150938920 似乎没有遵循这个规则
  • 为什么要早上 5 点开始? Unix 时间戳以 UTC 度量。我会先转换为 UTC 的日期时间,然后对时间戳进行任何更改。将基值设置为“1970-01-01 00:00:00 UTC”以外的任何值对我来说似乎都是一种误导。
  • @etsa 。 . .我无法解释为什么 your 数据的时间戳记为 2133 年。这可能是数据错误。或者它实际上是有效的。
  • @Gordon:它们不是我的数据(我不是提问者......)再见
猜你喜欢
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
相关资源
最近更新 更多