用DATE喂食餐桌的方法是什么?

时间:2015-06-11 09:05:59

标签: php mysql sql

该表有一个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。

2 个答案:

答案 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;