我正在使用MS Access数据库来跟踪一年中的某些任务。每个任务都有一个到期月。我不想使用确切的日期,因为我的团队的惯例是引用月份。我不希望以日期格式存储日期,因为团队成员将手动进入到期月份。
如果将日期存储为文本字符串月份,是否可以按日期顺序对字段进行排序? (例如,1月,2月而非2009年1月31日,2009年2月28日)。
如果是这样,这样的查询会是什么样的?
提前致谢。
答案 0 :(得分:2)
如果您只存储月份名称,您首先需要转换为日期以获取月份编号,使用查找表(MonthNo,MonthName)或使用切换功能。以下是转换为日期的示例:
SELECT Month(CDate(Year(Date()) & "/" & [MonthNameField] & "/1")) AS MonthNo
FROM Table
但是,根据输入的月份名称存储日期可能是一个很好的理由,这可以避免多年来的混淆。
答案 1 :(得分:0)
这应该有效
SELECT * FROM TableName OrderBy Month(date_field)
答案 2 :(得分:0)
我会将月份存储为1-12的整数,然后您可以轻松地对它们进行排序。
答案 3 :(得分:0)
我会制作一个日期字段。
我将在2009年1月1日,2009年2月2日的2009年2月1日存储,等等。出于显示目的,我将其格式化,使其仅显示月份(或月份+年份 - 无法想象您不希望年份如何)。
这样就可以利用字段上的日期操作,而不会出现文本到日期格式的混乱转换。
答案 4 :(得分:0)
谢谢大家的回复。很抱歉延迟回复 - 我现在正在解决这个问题。
为清楚起见,数据库将用于跟踪12个月内的事件时间表。年份不需要存储,因为数据库中的所有内容都指的是同一年。数据库的新副本将于2010年初制作。
我真的很想将月份存储为单词,而不是任何类型的值或日期字段,因为批量添加任务时我可能会直接编辑表格而不是使用表单。
答案 5 :(得分:0)
我意识到这已经死了但谷歌把我带到了这里,而我正在寻找我想加入它:
我自己遇到了这个问题(Access 2010)并在这里找到了一个不错的答案:http://www.vbforums.com/showthread.php?503841-How-to-Convert-MonthName-to-Value(Microsoft-access-2003)
所以我所做的是有一个查询,从我的表中删除了DISTINCT个月。然后在设计视图中,我添加了另一列MonthNo: Month(CDate("1 " & [Month]))
并在此列上对查询进行了排序
希望这有助于某人,如果不是OP。