我想对销售表和购买表进行一些查询,比如显示总成本或特定商品的总销售额等。
这两个表都有一个日期字段,以可排序的格式存储日期(我猜想只是默认值?)
我想知道如何使用此日期字段作为查询的一部分来使用日期范围,例如:
去年,从一年中的任何特定日期开始
过去30天,从任何一天开始
显示设定的月份,例如1月,2月等。
这些类型的查询是否只能使用DATE字段,或者将数月和数年存储为单独的tex字段会更容易吗?
答案 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,编程语言通常具有很好的设施,转换为内置于标准库中的文件。)