2009-10-08 108 views
1

我解析包含条目的“在创建”饲料,格式如下:MySQL的日期时间字段

Thu, 08 Oct 2009 23:01:33 +0000 

我需要能够以这些信息存储在一个MySQL表的日期时间数据类型。然后,我想选择行WHERE datetime子句等于或在日期和/或时间之间的范围内。

我有两个问题:

  1. 将这个字符串可以接受作为MySQL的日期时间数据类型?
  2. 如果是,我应该构建哪个查询以获取日期或小时之间的结果?
+1

如果您使用的是PHP,那么我认为您可以使用strtotime()转换为时间戳,然后转换为mysql数据时间格式。 – 2009-10-08 23:20:01

回答

1

你可以做这些方针的东西(在你选择的语言),将您的字符串转换成可接受的MySQL的日期时间:

$inputdate = "Thu, 08 Oct 2009 23:01:33 +0000"; 
$unixdate = strtotime($inputdate); //output: 1255042893 
$datetime = date("Y-m-d H:i:s", $unixdate); //output: 2009-10-08 23:01:33 

有两种方法可以在两个日期之间找到记录,这是我的最爱:

SELECT * FROM table WHERE date >= '2009-07-01 00:00:00' and date <= '2009-10-31 23:59:59' 
+0

Delilah, 感谢您的回答 我按照您的指示,并从某些原因我得到 “2009 -10-31 01:01:33“而不是 ”2009-10-31 23:01:33“ 有什么想法为什么? – 2009-10-09 00:07:24

+0

嗯..假设你的日期()格式和日期本身的来源都是正确的,接下来我要看的是时区的滑稽。如果还没有,请尝试在文件开头定义时区,如下所示: date_default_timezone_set(“GMT”); – Zoe 2009-10-09 00:29:35

+0

是真的!没有很好的作品 谢谢 – 2009-10-09 00:38:31

2

MySQL将在下面的格式

YYYY-MM-DD HH:MM:SS 

SELECT * FROM tbl WHERE datestamp = '2009-10-08 23:01:33'; 
+0

http://dev.mysql.com/doc/refman/5.1/zh/date-and-time-functions.html – Littlejon 2009-10-08 23:25:20

0
select * from table where date1 between date2 and date3; 
3

你可以找到在MySQL日期解析STR_TO_DATE功能有用接受一个字符串作为date

mysql> SELECT STR_TO_DATE('Thu, 08 Oct 2009 23:01:33 +0000', '%a, %d %b %Y %H:%i:%s +0000'); 
    -> '2009-10-08 23:01:33' 

可用格式是一样的DATE_FORMAT

相关问题