网站建设资讯

NEWS

网站建设资讯

有关nosql时间戳的题的简单介绍

mysql数据库时间字段是时间戳,怎样查询最近2015年1月份到现在的的数据,SQL语句怎样写,谢谢啦

请参考以下实验:

我们提供的服务有:成都网站制作、成都做网站、微信公众号开发、网站优化、网站认证、龙港ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的龙港网站制作公司

-- 2015年1月份到现在的的数据

select *,now() as time_now from timestampTest

where tmStmp between '2015-01-01 00:00:00'

and now();

什么是mysql 的时间戳

1、将时间转换为时间戳

[sql] view plaincopyprint?

select unix_timestamp('2009-10-26 10-06-07')

如果参数为空,则处理为当前时间

2、将时间戳转换为时间

[sql] view plaincopyprint?

select from_unixtime(1256540102)

有些应用生成的时间戳是比这个多出三位,是毫秒表示,如果要转换,需要先将最后三位去掉,否则返回NULL

UNIX_TIMESTAMP(date)

如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的 本地时间的一个数字。

[sql] view plaincopyprint?

mysql select UNIX_TIMESTAMP();

- 882226357

mysql select UNIX_TIMESTAMP('1997-10-04 22:23:00');

- 875996580

当UNIX_TIMESTAMP被用于一个TIMESTAMP列,函数将直接接受值,没有隐含的“string-to-unix-timestamp”变换。

FROM_UNIXTIME(unix_timestamp)

以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,取决于函数是在一个字符串还是或数字上下文中被使用。

[sql] view plaincopyprint?

mysql select FROM_UNIXTIME(875996580);

- '1997-10-04 22:23:00'

mysql select FROM_UNIXTIME(875996580) + 0;

- 19971004222300

FROM_UNIXTIME(unix_timestamp,format)

返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。

[sql] view plaincopyprint?

mysql select FROM_UNIXTIME(UNIX_TIMESTAMP(),

'%Y %D %M %h:%i:%s %x');

- '1997 23rd December 03:43:30 x'

通过 UNIX_TIMESTAMP 函数把 MySQL 数据库中的 date 类型数据转换成 unix timestamp 形式的一个整形数字:

[sql] view plaincopyprint?

select UNIX_TIMESTAMP('2006-02-28') testdate;

[sql] view plaincopyprint?

按理说得到的时间戳应该可以直接拿来给 PHP 的 date() 等函数使用。但奇怪的是:

echo date("Y-m-d",$testdate);

显示出来的日期跟数据库实际的日期相比却少了一天,百思不得其解。反复查看 MySQL 关于 UNIX_TIMESTAMP 函数的说明,终于发现问题所在:“The server interprets date as a value in the current time zone and converts it to an internal value in UTC.” 原来 MySQL 的 UNIX_TIMESTAMP 函数得到的时间戳是 UTC 时间,而不是服务器设定的特定 Time zone 的时间。经过这样一转化,时间戳就凭空少了8个小时(对于咱这里来说),而 PHP 中的 timestamp 则计算的都是系统设定时区的当地时间。因此 2006-02-28 这个日期被减去了8个小时,自然变成了2006-02-27。

[sql] view plaincopyprint?

解决方法:把这八个小时加回去(UNIX_TIMESTAMP('2006-02-28' + INTERVAL 8 HOUR));或者弃用 UNIX_TIMESTAMP 函数, 直接得到 MySQL date 字符串之后通过 strtotime() 函数来把字符串转化成真正的本地时间戳。

找出下个月生日的动物也是容易的。假定当前月是4月,那么月值是4,你可以找在5月出生的动物 (5月),方法是:

[sql] view plaincopyprint?

mysql SELECT name, birth FROM pet WHERE MONTH(birth) = 5;

.................

$conn=mysql_connect("localhost","root","1234")or die("连接数据库失败");

$conndb=mysql_select_db("test",$conn)or die("连接表失败");

$query="select * from ttable";

$result = mysql_query($query,$conn);

while($row = mysql_fetch_array($result)){

$rows[]=$row;

}

$random =rand(0,count($rows));

print_r($rows[$random]);

关于SQLSERVER中的时间戳的问题

很简单,因为 b的类型不是bigint 而是numeric(10,0) 也就是说,convert(timestamp,3867022616) =convert(timestamp,convert(numeric(10,0),3867022616))

sql server 规则无论你INT有多长,不超过38位,只要超过int的长度就会变成numeric。所以不会变成bigint,而timestamp是根据类型来的。不同数据类型就算值一样,转换成的时间戳就不一样,如果你想规避这个问题,你b就要改成select convert(timestamp,convert(bigint,3867022616)) b

关于sql查询unix时间戳的问题?

今天在项目中遇到一个问题:一个表中含有多个时间戳的字段,怎样在列表显示出处理过的时间。问了一个大佬,给我的解答方法:

(1)当只有一个时间戳字段要处理的时候,只需要在查询的字段上加上下面的代码:

IF(create_time0,FROM_UNIXTIME(`create_time`,'%Y-%m-%d'),'--') as `create_time`

1

(2)当含有多个时间戳字段处理的时候,只需要在查询的字段上加上下面的代码:

(case when create_time0 then FROM_UNIXTIME(`create_time`,'%Y-%m-%d') else '--' end) as create_time,

(case when start_time0 then FROM_UNIXTIME(`start_time`,'%Y-%m-%d') else '--' end) as start_time,

(case when end_time0 then FROM_UNIXTIME(`end_time`,'%Y-%m-%d') else '--' end) as end_time"

关于SQL 时间戳问题

mysql中自带转换函数

select FROM_UNIXTIME(0x00000000134A147A,'%Y-%m-%d %T');

但是你给出的结果不对啊,自己试吧。

验证结果


网站栏目:有关nosql时间戳的题的简单介绍
标题路径:http://cdweb.net/article/dsdpoee.html