【发布时间】:2011-04-26 23:30:58
【问题描述】:
我目前正在开发一个显示文档的应用程序,并允许成员通过许多不同的参数搜索这些文档,其中一个参数是日期范围。
我遇到的问题是数据库架构不是我自己开发的,数据库的创建者创建了一个“日期”表,其中包含“日”、“月”、“年”的字段。
我想知道如何从表中选择特定的日、月、年并在 SQL 中创建一个日期对象,以便我可以比较用户使用 BETWEEN 输入的日期。
下面是日期表的结构:
CREATE TABLE IF NOT EXISTS `date` (
`deposition_id` varchar(11) NOT NULL default '',
`day` int(2) default NULL,
`month` int(2) default NULL,
`year` int(4) default NULL,
PRIMARY KEY (`deposition_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
【问题讨论】:
-
天啊。人们为什么要对他们的数据库这样做? :-(
-
我实际上最终更改了数据库表以创建一个日期时间字段,然后连接年、月、日字段并根据 deposit_id 更新行。似乎是一种享受。
-
@Spudley 遗憾的是,这并不少见……甚至 'crunchbase' api 也以这种方式返回日期……这很糟糕……:-(
-
@Spudley 因为 MySQL 的日期时间和时间戳类型,以及您无法选择退出的时区转换这些年来仍然是垃圾。
-
@MichaelFulton 你可能是对的,他们有问题。但是,如果您告诉我使用日期时间字段或时间戳比问题中描述的解决方案更糟糕,那么恐怕我将不得不恭敬地不同意。
标签: sql mysql database datetime