Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql可以找到unix时间戳的年份值吗?_Mysql - Fatal编程技术网

mysql可以找到unix时间戳的年份值吗?

mysql可以找到unix时间戳的年份值吗?,mysql,Mysql,im使用标准unix时间戳在db中存储条目发布的日期 是否可以仅使用mysql查询(无php逻辑)来选择某一年发布的条目 我希望避免检索所有条目,然后使用php过滤年份值。当然,我可以将年份存储在一个单独的字段中,只是好奇一下,也许可以使用FROM_UNIXTIME()函数 可能使用FROM_UNIXTIME()函数 这应该是你想要的: SELECT FROM_UNIXTIME(my_unix_timestamp_column, '%Y') AS year FROM table_name W

im使用标准unix时间戳在db中存储条目发布的日期

是否可以仅使用mysql查询(无php逻辑)来选择某一年发布的条目


我希望避免检索所有条目,然后使用php过滤年份值。当然,我可以将年份存储在一个单独的字段中,只是好奇一下,也许可以使用FROM_UNIXTIME()函数


可能使用FROM_UNIXTIME()函数


这应该是你想要的:

SELECT FROM_UNIXTIME(my_unix_timestamp_column, '%Y') AS year FROM table_name WHERE my_unix_timestamp_column BETWEEN UNIX_TIMESTAMP('2004-01-01 00:00:00') AND UNIX_TIMESTAMP('2004-12-31 23:59:59');

这应该是你想要的:

SELECT FROM_UNIXTIME(my_unix_timestamp_column, '%Y') AS year FROM table_name WHERE my_unix_timestamp_column BETWEEN UNIX_TIMESTAMP('2004-01-01 00:00:00') AND UNIX_TIMESTAMP('2004-12-31 23:59:59');

更好的方法是使用一点PHP来创建所需的unix时间戳。如果是今年,试试看

$timestamp = strtotime("January, 1, 2009");
$db->query("Select * from table where time < $timestamp");
$timestamp=strottime(“2009年1月1日”);
$db->query(“从时间<$timestamp的表中选择*);

这只是一个示例,但是您将能够快速缩小结果范围,并且只执行非常小的php逻辑。

更好的方法是使用一点php来创建所需的unix时间戳。如果是今年,试试看

$timestamp = strtotime("January, 1, 2009");
$db->query("Select * from table where time < $timestamp");
$timestamp=strottime(“2009年1月1日”);
$db->query(“从时间<$timestamp的表中选择*);

这只是一个示例,但您可以快速缩小结果范围,只执行非常小的php逻辑。

取决于您的mysql版本。5.1具有此功能


取决于您的mysql版本。5.1具有此功能


您只希望MySQL做一次提取年份的艰苦工作:

SELECT your, columns
FROM posts
WHERE postdate BETWEEN UNIX_TIMESTAMP('20080101') AND (UNIX_TIMESTAMP('20090101')-1)

显然,这很容易适应于在某个月、某一天或某十年内提取帖子。

您只希望MySQL完成一次提取年份的艰苦工作:

SELECT your, columns
FROM posts
WHERE postdate BETWEEN UNIX_TIMESTAMP('20080101') AND (UNIX_TIMESTAMP('20090101')-1)

显然,这很容易适应在某个月、某一天或某十年内提取帖子等。

我从来没有意识到从\u UNIXTIME接受的格式参数,很好。你不能在WHERE子句中引用年份。。。如果您使用
HAVING
来代替,这可能会起作用,但是MySQL必须为每一行计算年份。我从未从\u UNIXTIME接受的格式参数中意识到,很好。您不能在WHERE子句中引用年份。。。如果您使用了
have
,它可能会起作用,但是MySQL必须计算出每一行的年份;MySQL将乐于处理
UNIX\u TIMESTAMP(20080101)
等等-我不知道这对性能是否有任何好处。这肯定是最好的答案。忽略我自己的想法如果你接受sealea的答案,选择正确答案是正确的(点击复选标记);MySQL将乐于处理
UNIX\u TIMESTAMP(20080101)
等等-我不知道这对性能是否有任何好处。这肯定是最好的答案。忽略我自己的想法如果你接受sealea的答案,选择正确的答案是正确的(点击复选标记)。他明确表示他不想要PHP解决方案。但也说“我希望避免检索所有条目,然后使用PHP过滤年份值。当然,我可以将年份存储在单独的字段中,只是好奇而已”这也是一个以前可能不知道的解决方案。他明确表示,他不想要PHP解决方案。但他还说:“我希望避免检索所有条目,然后使用PHP过滤年份值。当然,我可以将年份存储在单独的字段中,只是对此感到好奇。”这也是一种固溶体,以前可能不知道。