该表有一个DATE字段。
Tbl_a
ID DATE
我有时需要使用指定日期提供DATE
:即2015-6-12
。
有时隐含日期。即NOW()
或NOW() + INTERVAL 2 DAY
。
事情是,当喂NOW()
时,该字段没有撇号,因为NOW
被保留用于MySQL。
在喂养特定日期时,需要撇号。
INSERT INTO Tbl_a ('2015-06-12')
与
相反INSERT INTO Tbl_a (NOW())
当然这可以通过一个函数来解决,该函数测试第一个字符是否为数字,以决定是否添加撇号,
但有没有一种直接的方法可以解决这个问题?
编辑: 澄清:我从另一张表中获取值。所以另一个表包含一个表示日期的字符串。 'NOW()'或'2015-06-12'。该值必须输入Tbl_a。
答案 0 :(得分:2)
您解决问题的一种方法是使用https://jsfiddle.net/alaingoldman/5cseugvs/1检查提供的日期是否真的是一个日期。 strtotime将在失败时返回FALSE或-1(PHP <= 5.1.0)
示例:
$date = [some_supplied_date];
if (!strtotime($date)) {
$date = date('Y-m-d');
}
$sql = "Insert into tbl_a('$date')";
我的代码上面有一点问题,你需要像现在一样处理字符串,+ 1天等等......因为当用strtotime检查时它将是一个有效的结果
答案 1 :(得分:1)
我认为这会有所帮助:
insert into Tbl_a (newdate)
select
case dates
WHEN 'now()' THEN now()
else STR_TO_DATE(dates, '%y-%m/%d')
END
from Tbl_b;