草庐IT

Timestamp

全部标签

mysql - 在 MySQL 中将日期存储为 unix 时间戳或 TIMESTAMP 数据类型?

我需要在MySQL数据库中存储日期(带时间)。我希望能够按照我喜欢的方式格式化这些。那么在MySQL数据库中存储日期的最佳方式是什么?DATETIME类型、TIMESTAMP类型或只是数字数据类型中的unix时间戳?我将使用PHP检索日期。 最佳答案 通常使用TIMESTAMP或DATETIME数据类型并不重要。在旧版本中,TIMESTAMP是4个字节,DATETIME是8个字节。将DATETIME想象成时钟的图片;将TIMESTAMP视为世界范围内的一个瞬间。也就是说,如果您连接到同一个数据库,但来自不同的时区,DATETIME看

php - 在更新时在 mysql 中保留以前的时间戳

我不想在更新时更新我的​​时间戳字段。我需要在该字段中保留以前的日期时间。但即使我尝试关注它也会自动更新$data=array('start_time'=>$start,//previousdatetime'user_id'=>$agent_id,....);$this->db->where('id',$chat_id)->update('chat_state',$data);当我离开$start或强制使用之前的日期时间时。在这两种情况下都不起作用。在这两种情况下都使用CURRENTTIMESTAMP进行更新这是怎么回事?? 最佳答案

mysql - 支持 POCO C++ 库中的 MySQL 时间戳

POCO库支持MySQLDATE、TIME和DATETIME列,但不支持TIMESTAMP。从TIMESTAMP列中选择值会引发“未知字段类型”异常,因为“Poco/Data/MySQL/ResultMetadata.cpp”不支持MYSQL_TYPE_TIMESTAMP。在我的项目中,我必须将几个列更改为DATETIME才能使其正常工作。这不是一个大问题,但我仍然想知道这种限制的原因是什么。如果我必须使用无法更改的现有数据库模式,那我就会遇到严重的麻烦。时间戳列被广泛使用,因此我不认为它们被简单地省略了。时间戳列是否存在实现问题?有没有我可以使用的解决方法?future是否计划在PO

mysql - 使用 JOIN 条件限制 SQL JOIN

我有一个类似于LIMITingaSQLJOIN的问题,但要求稍微复杂一些。我想搜索某个时间范围内的用户和相关交易:SELECTu.*,t.*FROMUseruJOINTransactiontONt.user_id=u.idWHEREt.timestamp>=?andt.timestamp到目前为止,还不错。现在我想重复查询,但对返回的用户数量有限制。不过,对于给定用户返回的交易数量应该没有限制。如果我按照另一个问题中建议的方法进行操作,这将转化为:SELECTu.*,t.*FROM(SELECT*FROMUserLIMIT10)uJOINTransactiontONt.user_id=

MYSQL 按过去 10 分钟对日期间隔进行分组

我有一个包含消息和时间戳字段的数据库。我想选择过去10分钟的每一分钟的计数。这是我当前的查询:SELECTdate_format(timestamp,'%H:%i:%s'),COUNT(*)ascountFROMtestWHEREtimestampBETWEENDATE_SUB(NOW(),INTERVAL10MINUTE)ANDNOW()GROUPbyDATE_FORMAT(timestamp,'%i')ORDERBYtimestampASC这几乎如我所愿,向我显示过去10分钟的计数。但是,由于我按时间戳分组,除了最后一分钟,我从每分钟的第一个数据库条目中获取计数,使我的第一个和最后

mysql - 玛丽亚数据库/MySql : Setting CURRENT_TIMESTAMP on CREATE and changing noting on UPDATE

我已经有几年没有使用MySQL了,当我创建一个新表时,它做了一些我意想不到的事情。我正在使用MariaDBv5.5.60-MariaDB我需要创建一个包含created列和updated列的表。我需要在创建行时将created列仅设置为CURRENT_TIMESTAMP,然后除非我明确更改它,否则永远不会更改。我需要在创建行和更改行时将updated列设置为CURRENT_TIMESTAMP。如果我执行以下操作:CREATETABLEuser_prefs(idBIGINTUNSIGNEDNOTNULLAUTO_INCREMENTUNIQUE,userVARCHAR(255)NOTNUL

datetime - MySQL:过去 24 小时按小时插入的记录

我正在尝试列出过去24小时内每小时插入数据库的记录数。每行显示该小时插入的记录,以及几小时前插入的记录。现在这是我的查询:SELECTCOUNT(*),FLOOR(TIME_TO_SEC(TIMEDIFF(NOW(),time))/3600)FROM`records`WHEREtime>DATE_SUB(NOW(),INTERVAL24HOUR)GROUPBYHOUR(time)ORDERBYtimeASC现在它返回:28236223142014283191显示23小时前的两行,而当时它应该每小时只显示一行。我认为这与使用NOW()而不是在一小时开始时获取时间有关,我不确定如何获取时间

sql - 在 TIMESTAMP 类型的 MySQL 列中使用零值

我对MySQL中TIMESTAMP类型的文档以及零值是否可以安全使用感到有点困惑。manualsays:TheTIMESTAMPdatatypehasarangeof'1970-01-0100:00:01'UTCto'2038-01-1903:14:07'UTC....这意味着“0000-00-0000:00:00”超出范围,因此无效。但是,据我所知,手册实际上并没有这样说。它也没有明确说明“0000-00-0000:00:00”是有效值。实践表明'0000-00-0000:00:00'有效,而manualdoessay那:CREATETABLEt(tsTIMESTAMPDEFAULT

带有日期范围的 mySQL 查询,并且只为每个 ID 选择最近的记录

我有下表:RecordIDStatusDateTimestamp----------------------------------------------------------11waiting2010-02-022010-02-0212:00:0021finished2010-02-022010-02-0212:30:0032waiting2009-02-022009-02-0212:00:00我想获取日期介于2010-01-01和2010-03-03之间的记录。(这应该给我记录1和2)此外,我只想获取每个ID的最新(具有最新时间戳)。(这应该只给我记录2)。我不确定我需要如何构

mysql - 如何在 CURRENT_TIMESTAMP MySQL 中添加 24 小时?

我想在数据库表中添加过期时间戳。我有一个时间戳字段,类型为TIMESTAMP,默认值为CURRENT_TIMESTAMP()。我添加了DATETIME类型的新字段“expire”,默认值为ADDDATE(CURRENT_TIMESTAMP,INRERVAL1DAY),但不起作用。CREATETABLEIFNOTEXISTS`temp_mch`(`name`varchar(60)NOTNULL,`qty_new`int(5)NOTNULL,`timestamp`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,PRIMARYKEY(`name`),KEY`