如何将 SQL Server SMALLDATETIME 转换为 Unix 时间戳?
Posted
技术标签:
【中文标题】如何将 SQL Server SMALLDATETIME 转换为 Unix 时间戳?【英文标题】:How do I convert an SQL Server SMALLDATETIME to a Unix timestamp? 【发布时间】:2010-09-23 08:47:38 【问题描述】:
日期在 MS Access DB 中存储为 CAST(0x96040474 AS SmallDateTime)。数据已转储到 SQL,我希望将这些时间转换为 mysql 的 Unix 时间戳。
谢谢 AO
【问题讨论】:
您能否完善您的问题?一个unix文件时间戳?你想要什么特别的格式?顺便说一句,我假设这是您要问的 MS SQL? 它是 MS SQL —— 但它被丢弃了。我正在导入 MySQL。 我有很多记录的日期看起来像这样 CAST(0x96040474 AS SmallDateTime) 并且无法将其转换为 unix 时间戳。 为什么 Access 是相关的?我看不出这个标签的原因。 【参考方案1】:选择日期差异(ss,'1/1/1970',your_date_here)
例如
select datediff(ss, '1/1/1970', cast('1/1/1989' as smalldatetime))
【讨论】:
【参考方案2】:来自 SQL Server 2005 联机丛书,“Transact SQL 参考”
数据库引擎将
smalldatetime
值存储为两个 2 字节整数。前 2 个字节存储 1900 年 1 月 1 日之后的天数。其他 2 个字节存储自午夜以来的分钟数。
所以看起来您需要将十六进制值拆分为两个整数,然后从 1900/01/01 基准日期转换为 1970/01/01 基准日期,然后将另一个整数作为整数分钟过去午夜。
【讨论】:
Ken -- 你能根据上面的公式转换一对吗?我可以交叉参考日期,看看它们是否正确。 0x96040474 0x9A9C03C0 感谢AO CAST(0x9A9C03C0 AS SmallDateTime) 和 CAST(0x96040474 AS SmallDateTime)【参考方案3】:php 的 strtotime() 函数将使用 smalldatetime 作为参数。
【讨论】:
以上是关于如何将 SQL Server SMALLDATETIME 转换为 Unix 时间戳?的主要内容,如果未能解决你的问题,请参考以下文章