小编ech*_*cho的帖子

SQL select语句中Order by 1的目的是什么?

我正在阅读工作中的一些旧代码,并注意到有几个带有order by 1子句的视图.这取得了什么成果?

例:

Create view v_payment_summary AS
SELECT A.PAYMENT_DATE,
       (SELECT SUM(paymentamount)
          FROM payment B
         WHERE PAYMENT_DATE = B.PAYMENT_DATE
           and SOME CONDITION) AS SUM_X,
       (SELECT SUM(paymentamount)
          FROM payment B
         WHERE PAYMENT_DATE = B.PAYMENT_DATE
           and SOME OTHER CONDITION) AS SUM_Y    
FROM payment A    
ORDER BY 1;
Run Code Online (Sandbox Code Playgroud)

sql sql-order-by

139
推荐指数
5
解决办法
14万
查看次数

为什么PHP和MySQL unix时间戳在1983-10-29分歧?

我一直在我的应用程序中使用PHP strtotime和MySQL的UNIX_TIMESTAMP函数,将日期转换为时间戳.PHP和MySQL在我的本地机器上运行,这些函数通常返回相同的结果,正如我所期望的那样:

$ php
<?php echo strtotime("2011-06-02"); ?>
1307001600

mysql> SELECT UNIX_TIMESTAMP("2011-06-02") ts;
+------------+
| ts         |
+------------+
| 1307001600 |
+------------+
Run Code Online (Sandbox Code Playgroud)

但是,偶然地,我碰巧注意到当我1983-01-01作为日期输入时,结果不再相等:

$ php
<?php echo strtotime("1983-01-01"); ?>
410263200

mysql> SELECT UNIX_TIMESTAMP("1983-01-01") ts;
+-----------+
| ts        |
+-----------+
| 410256000 |
+-----------+
Run Code Online (Sandbox Code Playgroud)

如您所见,PHP返回410263200,而MySQL返回410256000 - 相差7200秒.

这让我很好奇,我想知道时间戳不再等同于什么日期,所以我写了一个以今天的日期(Ymd格式)开头的小程序,使用PHP strtotime和MySQL UNIX_TIMESTAMP并比较结果.然后它从每个值中减去1天并循环直到它们不再相等.

结果:

1983年10月29日

1983年10月29日,出于某种原因,strtotimeUNIX_TIMESTAMP返回值,通过7200秒不同.

有任何想法吗?

谢谢阅读.

php mysql datetime date

29
推荐指数
1
解决办法
606
查看次数

标签 统计

date ×1

datetime ×1

mysql ×1

php ×1

sql ×1

sql-order-by ×1