Mar*_*ace 60 mysql sql postgresql datetime timestamp
有没有什么办法让出一个时间戳的毫秒MySql或PostgreSql(或其他人只是出于好奇)?
SELECT CURRENT_TIMESTAMP
--> 2012-03-08 20:12:06.032572
Run Code Online (Sandbox Code Playgroud)
有这样的事情:
SELECT CURRENT_MILLISEC
--> 1331255526000
Run Code Online (Sandbox Code Playgroud)
或唯一的选择是使用DATEDIFF从era?
Cla*_*nda 50
对于MySQL(5.6+),您可以这样做:
SELECT ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)
Run Code Online (Sandbox Code Playgroud)
哪个会返回(例如):
1420998416685 --milliseconds
Run Code Online (Sandbox Code Playgroud)
Bil*_*oon 34
要在MySQL中以秒为单位获取Unix时间戳:
select UNIX_TIMESTAMP();
Run Code Online (Sandbox Code Playgroud)
详细信息:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp
没有测试PostgreSQL,但根据这个网站它应该工作:http://www.raditha.com/postgres/timestamp.php
select round( date_part( 'epoch', now() ) );
Run Code Online (Sandbox Code Playgroud)
jba*_*ina 34
在mysql中,可以使用uuid函数来提取毫秒.
select conv(
concat(
substring(uid,16,3),
substring(uid,10,4),
substring(uid,1,8))
,16,10)
div 10000
- (141427 * 24 * 60 * 60 * 1000) as current_mills
from (select uuid() uid) as alias;
Run Code Online (Sandbox Code Playgroud)
结果:
+---------------+
| current_mills |
+---------------+
| 1410954031133 |
+---------------+
Run Code Online (Sandbox Code Playgroud)
它也适用于较旧的mysql版本!
感谢您对本页:http://rpbouman.blogspot.com.es/2014/06/mysql-extracting-timstamp-and-mac.html
Ahm*_*med 11
在Mysql 5.7+中,您可以执行
select current_timestamp(6)
Run Code Online (Sandbox Code Playgroud)
更多细节
https://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
Com*_*g88 10
海报要求自 Epoch 以来 MS的整数值,而不是自 Epoch 以来的时间或 S。
为此,您需要使用NOW(3)which 为您提供小数秒到 3 个小数位的时间(即 MS 精度):2020-02-13 16:30:18.236
然后UNIX_TIMESTAMP(NOW(3))获得自 epoc 以来的小数秒时间:
1581611418.236
最后,FLOOR(UNIX_TIMESTAMP(NOW(3))*1000)为了得到一个很好的整数,对于自 epoc 以来的毫秒:
1581611418236
使其成为 MySQL 函数:
CREATE FUNCTION UNIX_MS() RETURN BIGINT DETERMINISTIC
BEGIN
RETURN FLOOR(UNIX_TIMESTAMP(NOW(3))*1000);
END
Run Code Online (Sandbox Code Playgroud)
现在运行 SELECT UNIX_MS();
注意:这都是手工复制的,所以如果有错误,请随时修复;)
小智 8
从PostgreSQL上的时间戳值中提取毫秒的正确方法相应于当前文档:
SELECT date_part('milliseconds', current_timestamp);
--OR
SELECT EXTRACT(MILLISECONDS FROM current_timestamp);
Run Code Online (Sandbox Code Playgroud)
with returns:秒字段,包括小数部分,乘以1000.请注意,这包括整秒.
带有时间戳的MySQL中的主要误解是,默认情况下,MySQL既返回又存储没有小数部分的时间戳。
SELECT current_timestamp() => 2018-01-18 12:05:34
Run Code Online (Sandbox Code Playgroud)
可以将其转换为秒时间戳
SELECT UNIX_TIMESTAMP(current_timestamp()) => 1516272429
Run Code Online (Sandbox Code Playgroud)
要添加小数部分:
SELECT current_timestamp(3) => 2018-01-18 12:05:58.983
Run Code Online (Sandbox Code Playgroud)
可以将其转换为微秒时间戳
SELECT CAST( 1000*UNIX_TIMESTAMP(current_timestamp(3)) AS UNSIGNED INTEGER) ts => 1516272274786
Run Code Online (Sandbox Code Playgroud)
在表中存储的技巧很少。如果您的表是这样创建的
CREATE TABLE `ts_test_table` (
`id` int(1) NOT NULL,
`not_fractional_timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
MySQL不会在其中存储小数部分:
id, not_fractional_timestamp
1, 2018-01-18 11:35:12
Run Code Online (Sandbox Code Playgroud)
如果要将小数部分添加到表中,则需要以其他方式创建表:
CREATE TABLE `ts_test_table2` (
`id` int(1) NOT NULL,
`some_data` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
`fractional_timestamp` timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
导致所需的结果:
id, some_data, fractional_timestamp
1, 8, 2018-01-18 11:45:40.811
Run Code Online (Sandbox Code Playgroud)
current_timestamp()函数允许接收的值最大为6,但我发现(至少在Windows上安装的MySQL 5.7.11版本中)分数精度6导致尾部的常数恒定为3位,以我为例688
id, some_data, fractional_timestamp
1, 2, 2018-01-18 12:01:54.167688
2, 4, 2018-01-18 12:01:58.893688
Run Code Online (Sandbox Code Playgroud)
这意味着MySQL真正可用的时间戳精度取决于平台:
我发现在 MySql 中接收当前时间(以毫秒为单位)的最简单方法:
SELECT (UNIX_TIMESTAMP(NOW(3)) * 1000)
Run Code Online (Sandbox Code Playgroud)
从 MySql 5.6 开始。
使用:
Select curtime(4);
Run Code Online (Sandbox Code Playgroud)
这将给你毫秒.
| 归档时间: |
|
| 查看次数: |
132544 次 |
| 最近记录: |