SQL 时间戳转DateTime类型
2016-04-26 09:34
375 查看
最近在工作中通过接口获取时间字段为时间戳的值,直接入库后再页面查询时间格式时候需要通过SQL语句将时间戳格式装换为时间格式进行比较,首先我们需要知道时间戳格式是怎么产生的,: Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中
时间类型转换为时间戳会有10位和13位两种区别,10 位的时间戳的源时间格式为 yyyy-MM-dd hh:MM:ss .000 毫秒位数为三个零,而13位的时间戳格式是包含了毫秒数的。
10位的时间戳格式在SQL中转换为普通时间格式的方法:DATEADD(s, Unix timestamp+8*3600, '1970-01-01 00:00:00')
13 位的时间戳转换为普通时间格式不能直接使用这种方式,所以在这里我的做法是截取前边10位为无毫秒的时间格式的时间戳,所以写法:
DATEADD(S,CAST( SUBSTRING(CreateTime,1,10) AS INT ) + 8 * 3600,'1970-01-01 00:00:00 ')
在SQL中普通时间格式转为时间戳格式:DATEDIFF(s, '1970-01-01 00:00:00', time)
在不同的语言中实现的方式不同,参见 http://tool.chinaz.com/Tools/unixtime.aspx
时间类型转换为时间戳会有10位和13位两种区别,10 位的时间戳的源时间格式为 yyyy-MM-dd hh:MM:ss .000 毫秒位数为三个零,而13位的时间戳格式是包含了毫秒数的。
10位的时间戳格式在SQL中转换为普通时间格式的方法:DATEADD(s, Unix timestamp+8*3600, '1970-01-01 00:00:00')
13 位的时间戳转换为普通时间格式不能直接使用这种方式,所以在这里我的做法是截取前边10位为无毫秒的时间格式的时间戳,所以写法:
DATEADD(S,CAST( SUBSTRING(CreateTime,1,10) AS INT ) + 8 * 3600,'1970-01-01 00:00:00 ')
在SQL中普通时间格式转为时间戳格式:DATEDIFF(s, '1970-01-01 00:00:00', time)
在不同的语言中实现的方式不同,参见 http://tool.chinaz.com/Tools/unixtime.aspx
相关文章推荐
- vs2010 c# MySql 用户登录注册设计代码优化1
- Flask更新数据库出错
- SQLSERVER 中GO的作用详解
- sql语句为某一列添加或者删除某些字段
- 数据库存储过程
- Sql去除数据库中某一列的特殊字符
- oraclelinux系统udev配置
- mysql的空值与NULL的区别
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- MySQL中批量删除指定前缀表的sql语句
- MYSQL下载及重装的步骤
- sql server中select语句中取列别名
- sql server学习小结
- sql server使用存储发送电子邮件,(HTML样式)
- sql server查询数据库信息作为附件发送邮件信息
- sql server 金额小写转大写(存储过程)
- 数据库索引的实现原理
- mysql show 语句
- [mysql] Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'loser.tank_admin.login_ip' which is not functionally dependent on columns in GROUP BY clause; this is
- Redis队列——PHP操作简单示例