[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])
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()mysql>select current_timestamp, current_timestamp()
+---------------------+---------------------+
| current_timestamp | current_timestamp() |
+---------------------+---------------------+
| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |
+---------------------+---------------------+
2. MySQL (Unix 时间戳、日期)转换函数:
unix_timestamp(),
unix_timestamp(date),
from_unixtime(unix_timestamp),
from_unixtime(unix_timestamp,format)
下面是示例:
select unix_timestamp()-- 1218290027
select unix_timestamp('2008-08-08')-- 1218124800
select unix_timestamp('2008-08-08 12:30:00')-- 1218169800
select from_unixtime(1218290027)-- '2008-08-09 21:53:47'
select from_unixtime(1218124800)-- '2008-08-08 00:00:00'
select from_unixtime(1218169800)-- '2008-08-08 12:30:00'
select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x')-- '2008 8th August 12:30:00 2008'
3. MySQL 时间戳(timestamp)转换、增、减函数:
timestamp(date) -- date to timestamp
timestamp(dt,time) -- dt + time
timestampadd(unit,interval,datetime_expr) --
timestampdiff(unit,datetime_expr1,datetime_expr2) --
请看示例部分:
select timestamp('2008-08-08')-- 2008-08-08 00:00:00
select timestamp('2008-08-08 08:00:00', '01:01:01')-- 2008-08-08 09:01:01
select timestamp('2008-08-08 08:00:00', '10 01:01:01')-- 2008-08-18 09:01:01
select timestampadd(day, 1, '2008-08-08 08:00:00')-- 2008-08-09 08:00:00
select date_add('2008-08-08 08:00:00', interval 1 day)-- 2008-08-09 08:00:00
MySQL timestampadd() 函数类似于 date_add()。
select timestampdiff(year,'2002-05-01','2001-01-01')-- -1
select timestampdiff(day ,'2002-05-01','2001-01-01')-- -485
select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00')-- -12
select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00')-- 7
MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。
mysql 中把时间戳转换成普通时间,使用FROM_UNIXTIME函数一、FROM_UNIXTIME函数简介
1、函数作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。
2、语法:FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。
根据format字符串格式化date值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)