MySQL日期转换函数 13位时间戳转标准日期的代码示例

上周,一位客户问我如何将 1 3 位毫秒时间戳转换为 MySQL 中的标准日期格式,我向他解释了这一点。
首先,您需要将毫秒时间戳除以 1 000 将其转换为秒时间戳,然后可以使用 FROM_UNIXTIME 函数进行转换。
假设你的表名为“your_table”,并且有一个名为“timestamp_ms”的1 3 位毫秒时间戳列,那么你可以这样写:
sql 选择 FROM_UNIXTIME(timestamp_ms/1 000) AS standard_datetime, FROM_UNIXTIME(timestamp_ms/1 000, '%Y-%m-%d %H:%i:%s') AS formatted_datetime 从 你的表;
这里standard_datetime以标准格式返回DATETIME类型,formatted_datetime以您指定的格式返回它。

如果时间戳是“String”类型,则首先需要将其转换为数字,例如 B.如下:
sql 选择 FROM_UNIXTIME(CAST(timestamp_ms AS DECIMAL(1 6 ,3 ))/1 000) 从 你的表;
相反,如果想从标准日期转换回1 3 位时间戳,可以使用UNIX_TIMESTAMP函数,然后乘以1 000:
sql 选择 UNIX_TIMESTAMP(NOW())1 000 AS current_timestamp_ms, UNIX_TIMESTAMP('2 02 3 -03 -1 5 1 0:3 0:00')1 000 AS Specific_timestamp_ms 从 你的表;
但请注意,UNIX_TIMESTAMP 会丢失毫秒信息。
所以如果需要毫秒级的存储,建议直接使用BIGINT来存储1 3 位时间戳。

为什么FROM_UNIXTIME函数不能直接处理1 3 位时间戳?因为它是基于Unix时间戳的最初设计,以秒为单位。
传递1 3 位毫秒直接导致分析错误。

在实际应用中,可以遵循一些最佳实践,例如:统一存储标准、时区管理、避免隐式转换、索引优化、业务逻辑分离等。

比如要查询2 02 3 年3 月1 5 日的数据,可以这样写:
sql 选择 来自你的表 WHERE FROM_UNIXTIME(timestamp_ms/1 000) 在“2 02 3 -03 -1 5 00:00:00”和“2 02 3 -03 -1 5 2 3 :5 9 :5 9 ”之间;
或者优化时间戳范围比较:
sql 选择 来自你的表 其中 timestamp_ms 介于 1 6 7 8 8 09 6 00000 和 1 6 7 8 8 9 5 9 9 9 9 9 9 之间;
这使您可以有效地将 1 3 位毫秒时间戳转换为 MySQL 中的标准数据。
无论如何,这取决于你。

mysql中怎么把日期的格式转换为YYYYMMDD的数字形式,谢谢

SQL语句用于格式化日期,将create_time字段的值转换为“年月日时分秒”格式。

%Y%m%d%H%i%s 年、月、日、时、分、秒 %Y%m%d 比赛 年月日

mysql日期格式怎么转为数字格式

DATE_FORMAT()函数可以直接将日期转换为数字。
使用 %Y%m%d 格式将 2 02 3 -1 0-2 5 转换为 2 02 3 1 02 5 使用 %Y%m%d%H%i%s 将 2 02 3 -1 0-2 5 1 4 :3 0:4 5 转换为 2 02 3 1 02 5 1 4 3 04 5 日期参数必须是 DATE/DATETIME/TIMESTAMP 类型。
格式参数与年 %Y%m 月 %d 日相关。
%Y 是 4 位数的年份,%m 是 2 位数的月份,%d 是 2 位数的日。
%H is 2 4 hours, %i are minutes, %s are seconds. 由于要转换表列,因此列类型必须匹配。
%Y%m can be converted 2 02 3 -1 0-2 5 to 2 02 3 1 0. 当查询大量数据时,DATE_FORMAT()会很慢。
建议使用进程层或者优化索引。
Use the STR_TO_DATE reverse conversion function. STR_TO_DATE('2 02 3 1 02 5 ', '%Y%m%d') 输出 2 02 3 -1 0-2 5 你自己掂量一下。