MYSQL - 检索日期之间的时间戳

Jak*_*ake 7 mysql sql datetime

所有,

我有一个MYSQL表,其中包含一个名为timestamp的列.它是DATETIME数据类型,其值类似于"10/1/2009 3:25:08 PM',"10/1/2009 3:30:05 PM',"10/4/2009 3:40:01 PM',等等..

我想编写一个SQL查询来选择两个日期之间的时间戳字段中的所有值.这样的事情:

select timestamp from tablename where timestamp >= userStartDate and timestamp <= userEndDate
Run Code Online (Sandbox Code Playgroud)

userInput日期没有时间部分.你能为此建议正确的MySQL查询语法吗?谢谢

Qua*_*noi 14

SELECT timestamp
FROM   tablename
WHERE  timestamp >= userStartDate
       AND timestamp < userEndDate + INTERVAL 1 DAY
Run Code Online (Sandbox Code Playgroud)

这将选择之间的每一个具有记录日期部分userStartDateuserEndDate,前提是这些字段具有的类型DATE(无时间部分).

如果开始日期和结束日期以字符串形式出现,请使用STR_TO_DATE从任何给定格式转换:

SELECT timestamp
FROM   tablename
WHERE  timestamp >= STR_TO_DATE('01/11/2010', '%m/%d/%Y')
       AND timestamp < STR_TO_DATE('01/12/2010', '%m/%d/%Y') + INTERVAL 1 DAY
Run Code Online (Sandbox Code Playgroud)


Sam*_*son 8

SELECT timestamp
 FROM  myTable
 WHERE timestamp BETWEEN startDate AND endDate
Run Code Online (Sandbox Code Playgroud)

为了在使用BETWEEN日期或时间值时获得最佳结果,您应该使用CAST()显式转换为所需数据类型的值.示例:如果将a DATETIME与两个DATE值进行比较,请将DATE值转换为DATETIME值.如果使用字符串常量(例如与'2001-1-1'a进行比较)DATE,则将字符串强制转换为a DATE.

- http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between