表单和数据库之间的日期冲突

时间:2012-03-17 17:22:29

标签: php mysql sql

如果用户通过表单($ date_booked)提供格式的日期:

2012-1-6

与日期(date_booked)

进行比较
2012-01-06

检查它的正确SQL方法是什么(使用phpMyAdmin):

SELECT * FROM room WHERE date_booked LIKE $date_booked

或者MySQL会不会返回任何内容?

提前致谢。

2 个答案:

答案 0 :(得分:2)

  

假设来自$variable符号的PHP

使用PHP中的date_parse()函数,即使它们在语法上不同,也很容易比较两个日期:

date_parse('2012-1-6');

array (
  'year' => 2012,
  'month' => 1,
  'day' => 6,
  'hour' => false,
  'minute' => false,
  'second' => false,
  ...
)


date_parse('2012-01-06');

array (
  'year' => 2012,
  'month' => 1,
  'day' => 6,
  'hour' => false,
  'minute' => false,
  'second' => false,
  ...
)  

在旁注中,您应该考虑将日期/时间信息存储在数据库中的Unix时间戳(自1970年1月1日起的秒数)中 - 更容易执行计算。 PHP具有a weath个日期/时间函数。

如果您最终将日期和时间存储为Unix时间戳,那么您可以使用PHP的strtotime() function

  

strtotime - 将任何英文文本日期时间描述解析为Unix时间戳

答案 1 :(得分:1)

假设您正在使用TSQL并且用户输入了正确的日期

SELECT * FROM room WHERE date_booked = CONVERT(date, @UserEnteredDate)

您已将问题更新为MySQL

以下是有关如何比较日期MySQL - Change date string to date type in place?

的一个很好的示例