带有日期类型的SQL查询

时间:2010-07-07 02:42:08

标签: sql mysql

我想对销售表和购买表进行一些查询,比如显示总成本或特定商品的总销售额等。

这两个表都有一个日期字段,以可排序的格式存储日期(我猜想只是默认值?)

我想知道如何使用此日期字段作为查询的一部分来使用日期范围,例如:

去年,从一年中的任何特定日期开始

过去30天,从任何一天开始

显示设定的月份,例如1月,2月等。

这些类型的查询是否只能使用DATE字段,或者将数月和数年存储为单独的tex字段会更容易吗?

2 个答案:

答案 0 :(得分:2)

如果给定的DATE字段MY_DATE,您可以使用various date函数执行这3个操作:

<强> 1。选择去年的记录

SELECT * FROM MY_TABLE
WHERE YEAR(my_date) = YEAR(CURDATE()) - 1

<强> 2。过去30天

SELECT * FROM MY_TABLE
WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) < MY_DATE

第3。显示月份名称

SELECT MONTHNAME(MY_DATE), * FROM MY_TABLE

答案 1 :(得分:1)

我始终认为将日期存储为Unix timestamps是有利的。它们非常容易按范围排序和查询,MySQL具有内置的功能(如UNIX_TIMESTAMP()和FROM_UNIXTIME())。

您可以将它们存储在INT(11)列中;当你用它们编程时,你很快就会知道一天是86400秒,你可以通过将它乘以天数来获得更复杂的范围(例如,一个月足够接近86400 * 30,编程语言通常具有很好的设施,转换为内置于标准库中的文件。)