如何将 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 时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

sql server 语句如何将3个表合并成一个表?

如何从 C# 代码将 SQL Server CE 迁移到 SQL Server 2012 Express

sql server2000如何将数字转换为日期时间

sql server 2000 单用户如何设置?

如何将sql server2005数据库导出

如何将sql server2005数据库导出