使用当前日期

时间:2016-06-10 10:21:34

标签: mysql datetime

我正在构建一个用于演示软件的数据库。数据库中的日期字段需要是最新的,因为它的脚本将不断重建,因此日期始终是当前日期的当前日期。但是DATE()函数似乎无法正常工作。

例如,我将命令行上的mySql脚本导入到数据库中,这是要插入的表之一

-- Table structure for table `tasks`
--

CREATE TABLE `tasks` (
  `id` int(11) unsigned NOT NULL,
  `funeral_id` int(11) DEFAULT NULL,
  `deceased_id` int(11) DEFAULT NULL,
  `contact_id` int(11) DEFAULT NULL,
  `task_type_id` int(3) DEFAULT NULL,
  `assigned_id` varchar(30) DEFAULT NULL,
  `start_date` datetime DEFAULT NULL,
  `end_date` datetime DEFAULT NULL,
  `notes` text,
  `courtesy_call` tinyint(1) DEFAULT NULL,
  `q_accepted` tinyint(1) DEFAULT NULL,
  `q_mailed` tinyint(1) DEFAULT NULL,
  `q_returned` tinyint(1) DEFAULT NULL,
  `status_id` int(1) DEFAULT '0',
  `user_created_id` int(3) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `user_modified_id` int(3) DEFAULT NULL,
  `modified` datetime DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `tasks`
--

INSERT INTO `tasks` (`id`, `funeral_id`, `deceased_id`, `contact_id`, `task_type_id`, `assigned_id`, `start_date`, `end_date`, `notes`, `courtesy_call`, `q_accepted`, `q_mailed`, `q_returned`, `status_id`, `user_created_id`, `created`, `user_modified_id`, `modified`) VALUES
(1, 1, 1, 1, 1, '39', NULL, 'DATE_ADD(NOW(), INTERVAL 4 DAY)', NULL, 0, NULL, NULL, NULL, 0, 1, '2016-05-27 16:40:17', NULL, '2016-05-27 16:40:17');

我希望今天构建end_date字段加上四天,函数DATE_ADD(NOW(), INTERVAL 4 DAY)返回0000-00-00 00:00:00

此外,我尝试使用NOW()CURRENT_TIMESTAMP()的任何地方都会返回相同的值0000-00-00 00:00:00 这是为什么?

2 个答案:

答案 0 :(得分:2)

这是一个小错字。

您正在尝试插入' DATE_ADD(NOW(),INTERVAL 4 DAY)'但是函数名称周围的引号将其转换为字符串,因此它会触发警告并插入0000-00-00

尝试删除引号

INSERT INTO `tasks` (`id`, `funeral_id`, `deceased_id`, `contact_id`, `task_type_id`, `assigned_id`, `start_date`, `end_date`, `notes`, `courtesy_call`, `q_accepted`, `q_mailed`, `q_returned`, `status_id`, `user_created_id`, `created`, `user_modified_id`, `modified`) VALUES
(1, 1, 1, 1, 1, '39', NULL, DATE_ADD(NOW(), INTERVAL 4 DAY), NULL, 0, NULL, NULL, NULL, 0, 1, '2016-05-27 16:40:17', NULL, '2016-05-27 16:40:17');

它也应该与CURDATE()

一起使用

答案 1 :(得分:1)

从DATE_ADD(..)删除引号。

您还可以使用DATE_ADD(NOW(), INTERVAL 4 DAY)DATE_ADD(CURDATE(), INTERVAL 4 DAY)

INSERT INTO `tasks` (`id`, `funeral_id`, `deceased_id`, `contact_id`, `task_type_id`, `assigned_id`, `start_date`, `end_date`, `notes`, `courtesy_call`, `q_accepted`, `q_mailed`, `q_returned`, `status_id`, `user_created_id`, `created`, `user_modified_id`, `modified`) VALUES
(1, 1, 1, 1, 1, '39', NULL, DATE_ADD(CURDATE(), INTERVAL 4 DAY), NULL, 0, NULL, NULL, NULL, 0, 1, '2016-05-27 16:40:17', NULL, '2016-05-27 16:40:17');

您可以参考Mysql Date functions文档了解详细信息: