Php 如何用毫秒创建Mysql unix_时间戳
我有一个php函数,它使用mysql query UNIX_TIMESTAMP()创建一个唯一的事务号,但我发现如果函数在同一时间循环,它将为案例1生成相同的事务号,使用案例2对大型循环来说不是一个好方法 1.我使用的交易编号用于在表列表中对相同的交易日期进行排序 2.我的事务表使用UUID作为主键,因为数据跨数据库 欲望的答案如下所示,独一无二。Php 如何用毫秒创建Mysql unix_时间戳,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个php函数,它使用mysql query UNIX_TIMESTAMP()创建一个唯一的事务号,但我发现如果函数在同一时间循环,它将为案例1生成相同的事务号,使用案例2对大型循环来说不是一个好方法 1.我使用的交易编号用于在表列表中对相同的交易日期进行排序 2.我的事务表使用UUID作为主键,因为数据跨数据库 欲望的答案如下所示,独一无二。 TransNo = 1397533879.20290 PHP版本5.3 Mysql版本5.5 例如,功能循环3次 案例1: SELECT UNIX
TransNo = 1397533879.20290
PHP版本5.3
Mysql版本5.5
例如,功能循环3次
案例1:
SELECT UNIX_TIMESTAMP() as TransNo;
Output :
1397533879
1397533879
1397533879
SELECT UNIX_TIMESTAMP() as TransNo, SLEEP(1);
Output :
1397533879
1397533880
1397533881
案例2:
SELECT UNIX_TIMESTAMP() as TransNo;
Output :
1397533879
1397533879
1397533879
SELECT UNIX_TIMESTAMP() as TransNo, SLEEP(1);
Output :
1397533879
1397533880
1397533881
欲望的答案如下,独一无二
TransNo=1397533879.20290
如果调用current\u timestamp
或now
函数的精度为微秒
部分,则它们返回包含当前微秒时间的时间戳
。请注意,允许的最大精度仅适用于6
数字
请参阅有关的文档
示例1:
select
@ts:=current_timestamp( 3 ) cts_with_milli_seconds
, unix_timestamp( @ts ) uts_with_ts_milli_seconds;
select
@nw:=now( 6 ) now_with_milli_seconds
, unix_timestamp( @nw ) uts_with_nw_milli_seconds;
结果1:
+-------------------------+---------------------------+
| cts_with_milli_seconds | uts_with_ts_milli_seconds |
+-------------------------+---------------------------+
| 2014-04-15 10:22:17.764 | 1397537537.764000 |
+-------------------------+---------------------------+
+----------------------------+---------------------------+
| now_with_milli_seconds | uts_with_nw_milli_seconds |
+----------------------------+---------------------------+
| 2014-04-15 10:22:17.789248 | 1397537537.789248 |
+----------------------------+---------------------------+
示例2:
select
@ts:=current_timestamp( 3 ) cts_with_milli_seconds
, unix_timestamp( @ts ) uts_with_ts_milli_seconds;
select
@nw:=now( 6 ) now_with_milli_seconds
, unix_timestamp( @nw ) uts_with_nw_milli_seconds;
结果2:
+-------------------------+---------------------------+
| cts_with_milli_seconds | uts_with_ts_milli_seconds |
+-------------------------+---------------------------+
| 2014-04-15 10:22:17.764 | 1397537537.764000 |
+-------------------------+---------------------------+
+----------------------------+---------------------------+
| now_with_milli_seconds | uts_with_nw_milli_seconds |
+----------------------------+---------------------------+
| 2014-04-15 10:22:17.789248 | 1397537537.789248 |
+----------------------------+---------------------------+
旁注:如果仍然微秒部分太匹配,那么您可以将
RAND()
附加到您的值中
使用
RAND()
不能保证排序顺序。因此,除非您只需要一个唯一的输出,否则不要使用它 为什么不在php中使用微时间?哦,谢谢@Joshua Bixler,我忘了php有这个函数。但无论如何,mysql能够做到这一点吗?必须跳转到5.6版才能使用它。感谢@Ravinder,我使用Joshua Bixler提供的php microtime(),结果是1397537683.3391、1397537683.3429、1397537683.3456,如果使用RAND()不能保证顺序插入,它可以解决我的排序问题。RAND()
建议是在微型零件匹配的情况下。是的,在使用时,排序可能会失败。否则,我的回答和文章中提到的一样有用。