0

情况 我提取格式为 RFC 2822(星期六,2012 年 12 月 1 日 05:49:45 +0000)的时间戳并将它们存储在 MYSQL 的 VARCHAR 字段中。我有一个 start_date 和 end_date。

两个日期之间的目标 搜索(例如 start_date BETWEEN '2012-11-01' AND '2012-12-01')

条件 我想用纯 SQL 来做这件事,而不是用 PHP 做后期处理

可接受的妥协 我不想这样做,但如果需要,我会使用 PHP 将它们转换并存储为 DATETIME。

任何人都可以帮助我实现我的目标(如上所列)。瑞克

4

3 回答 3

2

您可以使用 str_to_date 将字符串日期转换为 datetime:

select str_to_date('Sat, 01 Dec 2012 05:49:45 +0000','%a, %d %b %Y %T')

如果您还需要转换时区,请尝试以下操作:

set @datestring='Sat, 01 Dec 2012 05:49:45 +0000';
select
  CONVERT_TZ(
    str_to_date(@datestring,'%a, %d %b %Y %T'),
    concat(mid(@datestring, 27, 3), ':', mid(@datestring, 30, 2)),
    '+00:00'
  )
于 2012-12-20T22:06:19.430 回答
1

将它们存储为原生DATETIME. 这是唯一理智的方法。

为什么你如此反对使用合适的工具来完成这项工作?

于 2012-12-20T21:43:44.010 回答
0

将时间戳存储为字符串是对数据库功能的不良使用。由于它们都是相同的格式,因此可以很容易地在输入时将它们转换为日期时间。

于 2012-12-20T21:44:26.940 回答