我在mySQL DB中有一个用datetime设置的表.
我只需要DATETIME在DATE这个表中排除时间.
如何SELECT在此表中仅按日期并绕过时间,即使该特定列设置为SELECT?
例:
现在它是: DATETIME
我只需为此做一2012-01-23 09:24:41件事SELECT
我有数以千计在坦桑尼亚拍摄的照片,我想在MySQL数据库中存储每张照片的日期和时间.然而,服务器位于美国,当我尝试存储坦桑尼亚日期时间时,我遇到问题,该日期时间在春季夏令时期间(在美国)处于"无效"小时内.坦桑尼亚不做DST,所以时间实际上是有效的时间.
其他复杂情况是,来自许多不同时区的合作者需要访问存储在数据库中的日期时间值.我希望他们总是作为坦桑尼亚时间出现,而不是在各个合作者所处的当地时代.
我不愿意设置会话时间因为我知道当有人忘记设置会话时间并且错过时间时会出现问题.而我无权更改服务器的任何内容.
我读过: 夏令时和时区最佳实践和 MySQL日期时间字段和夏令时 - 我如何引用"额外"时间?并 在PHP/MySQL中将日期时间存储为UTC
但它们似乎都没有解决我的特殊问题.我不是SQL专家; 有没有办法在设置DATETIME时指定时区?我还没见过一个.否则,非常感谢任何有关如何处理此问题的建议.
编辑:这是我遇到的问题的一个例子.我发送命令:
INSERT INTO Images (CaptureEvent, SequenceNum, PathFilename, TimestampJPG)
VALUES (122,1,"S2/B04/B04_R1/IMAG0148.JPG","2011-03-13 02:49:10")
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Error 1292: Incorrect datetime value: '2011-03-13 02:49:10' for column 'TimestampJPG'
Run Code Online (Sandbox Code Playgroud)
这个日期和时间存在于坦桑尼亚,但不存在于数据库所在的美国.
我正在使用以下INSERT语句:
INSERT INTO messages SET `to` = '".$to."', `from` = '".$this->userid."', `title` = '".$title."', `message` = '".$message."', `created` = NOW()
Run Code Online (Sandbox Code Playgroud)
但是,它使用我的服务器时间(America/Montreal).我想要亚洲时区(亚洲/加尔各答)
这是否可以使用相同的查询?
我在microsoft windows xp上使用MySQL 5.0.51b.我试图加载从时区信息文件中的数据(从下载库生成这里所描述的)到数据库表在这里.
现在我无法找到Windows的" mysql_tzinfo_to_sql "程序.我尝试在mysql命令行客户端上执行它但没有成功.在linux上,您可以直接在shell上执行此命令.
任何帮助表示赞赏.
我需要在指定月份的一天内获取'grand_total'的订单总数,SUM,MIN MAX和AVG.这就是我在做的事情.
$collection->getSelect()
->columns( 'SUM(base_grand_total) AS total' )
->columns( 'COUNT(*) AS orders_count' )
->columns( 'DATE_FORMAT(created_at, "%d") AS order_day' )
->columns( 'DATE_FORMAT(created_at, "%d/%m/%y") AS order_date' )
->columns( 'AVG(base_grand_total) AS avg_total' )
->columns( 'MAX(base_grand_total) AS max_total' )
->columns( 'MIN(base_grand_total) AS min_total' )
->where( 'DATE_FORMAT(created_at, "%m") = ?', $month )
->where( 'DATE_FORMAT(created_at, "%Y") = ?', $year )
->group( 'DATE_FORMAT(created_at, "%d-%m-%y")' );
Run Code Online (Sandbox Code Playgroud)
$ month是"Sep",$ year是"2014"


上面的查询说26日有3个订单,但是magento的Sales> Order网格表示只有一个订单在第26个.我猜答案在于," created_at "在DB中存储为"2014-09-04 02:50:04",但是如果我们将其格式化为"2014年9月3日下午4:50:04".
那么,任何人都可以建议如何在Collection上应用group by date子句.
提前致谢.
我来自印度.在000webhost中托管我的网站.我正在跟踪访问的IP和他们的时代.但时间是错误的,即我认为时间是根据000webhost服务器的时区.如何根据印度时区转换它们.
这是我正在使用的代码:
date_default_timezone_set('Asia/Kolkata');
$query="INSERT INTO visitor_ip ";
$query.="VALUES('{$_SERVER["REMOTE_ADDR"]}',now())";
Run Code Online (Sandbox Code Playgroud)