Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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
Php 在sql中存储日期的最佳格式_Php_Mysql_Sql_Date - Fatal编程技术网

Php 在sql中存储日期的最佳格式

Php 在sql中存储日期的最佳格式,php,mysql,sql,date,Php,Mysql,Sql,Date,我试图优化我在SQL/PHP网站上使用日期的方式。我熟悉date()和strotime()函数,并创建了在unix和datetime中都在服务器端存储数据的项目。我知道更改日期不会占用大量资源,但我正试图了解如何以最有效的方式编写代码 我现在想弄清楚的是,在服务器上存储日期最快/最有效的方法是什么,即:对于一个涉及频繁的日期字段CRUD的典型表,UNIX\u TIMESTAMP、CONVERT、UNIX\u和PHPstrotime和date函数的SQL最有效组合是什么。以以下为例: 我有一个包含

我试图优化我在SQL/PHP网站上使用日期的方式。我熟悉
date()
strotime()
函数,并创建了在unix和datetime中都在服务器端存储数据的项目。我知道更改日期不会占用大量资源,但我正试图了解如何以最有效的方式编写代码

我现在想弄清楚的是,在服务器上存储日期最快/最有效的方法是什么,即:对于一个涉及频繁的日期字段CRUD的典型表,UNIX\u TIMESTAMP、CONVERT、UNIX\u和PHP
strotime
date
函数的SQL最有效组合是什么。以以下为例:

我有一个包含3个日期列的SQL表。网站的多个用户可以定期更新所有这三项内容,并按如下方式输入条目:

mysql_query("INSERT INTO `regular` (
`regularid`,
`propertyid`,
`userid`,
`billdate`,
`billfrequency`,
`enddate`,
`amount`,
`description`,
`payee`,
`payer`,
`lastpayment` 
)
VALUES (
'', '{$_POST['propertyid']}', '$varuserid', FROM_UNIXTIME($date), '{$_POST['billfrequency']}', 'FROM_UNIXTIME($edate)', '$amount', '{$_POST['description']}', '{$_POST['payee']}', '{$_POST['payer']}', 'FROM_UNIXTIME($ldate)'
)") or die(mysql_error);

Print "A regular payment for &pound;".$_POST['amount']." has been created<br/>\n";
这意味着我从用户处获取dd/mm/yyyy日期格式,从数据库中获取另一个。然后我使用strotime将它们转换为unixtime,然后使用date将其转换回英国日期格式-这肯定是加倍了吗?如果不是三倍?服务器查询

我的问题分为两部分。 首先,它是否最快a)在sql中以unixtime存储所有日期格式并通过服务器端查询转换为日期格式,或b)仅在访问时以日期格式存储所有日期格式并转换为unixtime

(我认为后者是最好的,但我上面的例子表明,即使这样做,我似乎使用的服务器时间也超过了我应该使用的时间)

第二,你能为我指出我应该如何执行我自己的脚本时间基准的正确方向吗?我才真正开始理解测试,因为我对Php还比较陌生,但我渴望学习


非常感谢

使用MySQL的“unix\u timestamp()”,它很短,可以通过使用php、bash等在一秒钟内转换为可读的完整日期。

您将数据与其表示形式混淆了。在你把它们分开之后,你就不会有这样的问题了。您必须考虑MySQL的<代码>日期>代码>函数及其日期存储格式已经被优化以实现高性能。您最好以
date
格式存储日期,并仅当以Unix时间格式访问日期时才将其转换为
unixtime
。Unix时间格式最适合操作系统级别的操作,而不是数据库存储。就像在从服务器检索时使用Unix_timstamp(),并以日期格式而不是Unix格式存储数据一样?这是否意味着unix_timstamp()明显快于strotime?无论哪种方式,这仍然需要我将dd/mm/yyyy用户输入转换为unix格式以输入数据库,并在检索数据库时再次将其从unix转换为datetime。。。。当更新时,它需要做两次(数据检索和输入都需要),如果更新3个日期字段,则意味着6次重复。。。
   date("d-m-Y", strtotime($val['billdate']))