Php 表单和数据库之间的日期冲突
如果用户通过aform($date\u booked)以以下格式提供日期:Php 表单和数据库之间的日期冲突,php,mysql,sql,Php,Mysql,Sql,如果用户通过aform($date\u booked)以以下格式提供日期: 2012-1-6 2012-01-06 与日期(预定日期)进行比较: 2012-1-6 2012-01-06 检查它的正确SQL方法是什么(使用phpMyAdmin): 或者MySQL不会返回任何东西 提前感谢。假设您正在使用TSQL,并且用户输入了正确的日期 SELECT * FROM room WHERE date_booked = CONVERT(date, @UserEnteredDate) 您已将问题
2012-1-6
2012-01-06
与日期(预定日期)进行比较:
2012-1-6
2012-01-06
检查它的正确SQL方法是什么(使用phpMyAdmin):
或者MySQL不会返回任何东西
提前感谢。假设您正在使用TSQL,并且用户输入了正确的日期
SELECT * FROM room WHERE date_booked = CONVERT(date, @UserEnteredDate)
您已将问题更新为MySQL
下面是一个关于如何比较日期的好例子
从$variable
符号中假设PHP
使用PHP中的date\u parse()
函数,可以很容易地比较两个日期,即使它们在语法上不同:
date_parse('2012-1-6');
array (
'year' => 2012,
'month' => 1,
'day' => 6,
'hour' => false,
'minute' => false,
'second' => false,
...
)
请注意,将数据库中的日期/时间信息存储在UNIX时间戳(01秒/ 01秒/秒)中,这将更容易执行计算。PHP有许多日期/时间函数 如果最终将日期和时间存储为Unix时间戳,则可以使用PHP: strotime-将任何英文文本datetime描述解析为Unix时间戳
哪个SQL数据库系统?哪种编程语言?正确的答案是将字符串转换为编程语言中的日期/日期时间,然后将其作为日期/日期时间参数传递给数据库,但是如果不了解这些细节,就无法提供示例。(当然,希望DB将该值存储为datetime;但从正确性的角度来看,在查询过程中强制转换(到datetime)可能更好,如果性能有问题,则将其用作模式更改的原因)我添加了MySQl和php作为标记。我相信phpMyAdmin是一个通用的查询工具,而不是“表单”使用的技术,所以我不相信这是实际问题的一部分。(我还进一步假设,如果您使用的是phpMyAdmin,这也意味着您的通用语言是PHP。在这一点上我不知道)代码格式几乎正确-您需要缩进四个空格(或点击
{}
按钮)。@Damien_不相信人的错误偶尔出现一次。谢谢你指出这一点+而且大部分是暂时的。我确信最初的问题没有技术细节(因此我对它进行了第一次评论),但事实证明它是MySQL。所以CONVERT
不起作用(我希望CAST
应该)@Damien\u不信由你,我只是尝试格式化我的SELECT..
查询(通常是4个空格),但运气不好。大多数数据库(包括MySQL)都内置了日期时间类型。最好使用这些类型,而不是试图“暗示”其他类型的含义,如string、int或decimal。我的经验/习惯提醒我,历元时间戳是通用的——如果引擎支持日期/时间,那么它将识别历元(如果我错了,请纠正我)。我认为它仍然是一个很好的便携式和易于使用的选择。只要解释数据的每个人都知道纪元,纪元时间戳是通用的?这偏离了关系数据库的意图,即数据应该在没有外部引用的情况下可用