MYSQL日期范围RFC 2822

时间:2012-12-20 21:41:00

标签: mysql search datetime between rfc2822

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

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

条件 我想用纯SQL做这个,而不是用PHP进行后期处理

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用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'
  )

答案 1 :(得分:0)

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

为什么你这么反对使用适当的工具呢?

答案 2 :(得分:0)

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

相关问题