设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4277|回复: 7
打印 上一主题 下一主题

[ADO/DAO] 【源码】Fans.net的函数:Mysql数据中的时间戳转换为Access标准时间-FROM_UNIXTIME

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2015-4-13 10:46:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
与Fans.net 黄海 Zhengjialong等版主在讨论如何将淘宝的数据 分析出来,需要解决一个将mysql 的Mysql数据中的时间戳转换为Access标准时间
1.fans.net版主则提供一个VB VBA 及vb.net可使用的通用函数来转换

  1. ''' <sumary>
  2. ''' 把时间戳转换为标准时间
  3. ''' </sumary>
  4. ''' <param name="intTime">要转换的UNIX时间戳</param>
  5. ''' <param name="intTimeZone">该时间戳对应的时区</param>
  6. Function FromUnixTime(intTime, intTimeZone)
  7.     If IsEmpty(intTime) Or Not IsNumeric(intTime) Then
  8.          FromUnixTime = Now()
  9.         Exit Function
  10.     End If
  11.     If IsEmpty(intTime) Or Not IsNumeric(intTimeZone) Then intTimeZone = 0
  12.      FromUnixTime = DateAdd("s", intTime, "1970-1-1 0:0:0")
  13.      FromUnixTime = DateAdd("h", intTimeZone, FromUnixTime)
  14. End Function
  15.   中国的时区 可用 8
复制代码


2.我的方法 是直接使用mysql 内置的 FROM_UNIXTIME 格式化MYSQL时间戳函数
  1. 函数:FROM_UNIXTIME
  2. 作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。
  3. 语法:FROM_UNIXTIME(unix_timestamp,format)
  4. 返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。
  5. 根据format字符串格式化date值。
  6. 下列修饰符可以被用在format字符串中:
  7. %M 月名字(January……December)
  8. %W 星期名字(Sunday……Saturday)
  9. %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
  10. %Y 年, 数字, 4 位
  11. %y 年, 数字, 2 位
  12. %a 缩写的星期名字(Sun……Sat)
  13. %d 月份中的天数, 数字(00……31)
  14. %e 月份中的天数, 数字(0……31)
  15. %m 月, 数字(01……12)
  16. %c 月, 数字(1……12)
  17. %b 缩写的月份名字(Jan……Dec)
  18. %j 一年中的天数(001……366)
  19. %H 小时(00……23)
  20. %k 小时(0……23)
  21. %h 小时(01……12)
  22. %I 小时(01……12)
  23. %l 小时(1……12)
  24. %i 分钟, 数字(00……59)
  25. %r 时间,12 小时(hh:mm:ss [AP]M)
  26. %T 时间,24 小时(hh:mm:ss)
  27. %S 秒(00……59)
  28. %s 秒(00……59)
  29. %p AM或PM
  30. %w 一个星期中的天数(0=Sunday ……6=Saturday )
  31. %U 星期(0……52), 这里星期天是星期的第一天
  32. %u 星期(0……52), 这里星期一是星期的第一天
  33. %% 一个文字“%”。
复制代码

例子:
SELECT FROM_UNIXTIME(1234567890, '%Y-%m-%d %H:%i:%S')
SELECT *,FROM_UNIXTIME(created, '%Y-%m-%d') as riqi FROM `rc_ms_users`
理论上,使用mysql内置的函数可能会快一些
3.用途:
    1).可分析淘宝的网页数据,产品的上下架时间等,也竞争对手产品上架时间错开,避免竞争(黄海的点子)
    2).其它网页数据收集用途


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2015-4-13 10:54:42 | 只看该作者
我是来学习的,顶一个

点击这里给我发消息

3#
 楼主| 发表于 2015-4-13 10:57:59 | 只看该作者
zhengjialon 发表于 2015-4-13 10:54
我是来学习的,顶一个

zhengjialon,好久没上来了,高手最近闭关在做什么项目?

点击这里给我发消息

4#
发表于 2015-4-13 11:00:53 | 只看该作者
让站长见笑了,公司用的搞了好几年了。。。
5#
发表于 2015-4-13 11:11:19 | 只看该作者
偷偷的问句:这些数据从那弄?
6#
发表于 2015-4-13 11:15:16 | 只看该作者
  1. ''' <sumary>
  2.     ''' 把时间戳转换为标准时间
  3.     ''' </sumary>
  4.     ''' <param name="time">要转换的UNIX时间戳</param>
  5.     ''' <param name="timeZone">该时间戳对应的时区</param>
  6.     Public Shared Function FromUnixTime(time As Double, timeZone As Integer) As DateTime
  7.         Dim dtmStart As DateTime = New DateTime(1970, 1, 1, 0, 0, 0)
  8.         Dim t As DateTime = DateAdd(DateInterval.Second, CDbl(time), dtmStart)
  9.         Return DateAdd(DateInterval.Hour, timeZone, t)
  10.     End Function
复制代码
VB.NET

点击这里给我发消息

7#
 楼主| 发表于 2015-4-13 11:33:10 | 只看该作者

vb.net 好像更精简些
8#
发表于 2015-4-13 17:40:46 | 只看该作者
admin 发表于 2015-4-13 11:33
vb.net 好像更精简些

是的,语法上比VB更精简。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 06:35 , Processed in 0.329815 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表