gpt4 book ai didi

mysql - mysql 和 perl 中的时间戳格式

转载 作者:行者123 更新时间:2023-11-29 04:22:41 26 4
gpt4 key购买 nike

我不太熟悉时间戳格式。

我有一个例子

'Jul 19, 2013 12:00 pm' 

我想存储到mysql。这个时间戳在 MySQL 中是什么格式,在将它传递给 mysql 之前,我应该如何在 perl 中正确格式化它。

谢谢。

最佳答案

MySQL中时间戳的格式是什么?

强烈建议您阅读 MySQL manual .与在 StackOverflow 上发布问题相比,您会更快地获得答案。来自docs :

TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.

如您所见,格式为 YYYY-MM-DD HH:MM:SS

作为ysth在评论中指出,MySQL 也有一个 DATETIME 数据类型:

MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

注意几点:

  • DATETIMETIMESTAMP 都使用格式 YYYY-MM-DD HH:MM:SS
  • DATETIME 支持的日期范围比 TIMESTAMP 的范围大很多
  • TIMESTAMP 将值转换为 UTC 进行存储,并在检索时返回本地时区; DATETIME 不进行时区转换

如果您还不习惯使用 TIMESTAMP 数据类型,您可能会考虑使用 DATETIME,这取决于您尝试存储的数据类型。参见 this StackOverflow question有关 DATETIMETIMESTAMP 的更多详细信息。

在将它传递给 MySQL 之前,我应该如何在 Perl 中对其进行格式化?

要在 Perl 中将日期/时间字符串转换为不同的格式,您可以使用核心(自 v5.9 起)模块 Time::Piece :

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use Time::Piece;

my $date = 'Jul 19, 2013 12:00 pm';
my $t = Time::Piece->strptime($date, '%b %d, %Y %I:%M %p');
say $t->strftime('%F %T');
# 2013-07-19 12:00:00

从您的示例日期字符串中不清楚日期和小时是否用零填充。上面的示例假定格式如下

Oct 01, 2013 05:00 am

小于 10 的天数和小时数以零开头。如果你的输入格式实际上是

Oct 1, 2013 5:00 am

然后您需要更改传递给 Time::Piece->strptime 的格式字符串。格式说明符列表可以在 man page for strftime 中找到。 .

关于mysql - mysql 和 perl 中的时间戳格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com