我正在规划一个PHP应用程序,需要在MSSQL数据库中存储日期/时间。(对于好奇的人,这是一个日历应用程序。)存储此信息的首选格式是什么?
MSSQL有其自己的datetime数据类型,该数据类型在数据库本身中工作良好,并且可读性很好。但是,没有任何MSSQL函数可以将日期时间值转换为PHP的首选格式--UNIX时间戳。这使得在PHP中使用它会更加痛苦。UNIX时间戳很吸引人,因为它是PHP喜欢的,但它的可读性肯定不是很好,而且没有一堆很好的内置MSSQL函数来处理数据。
您会将此信息存储为datetime数据类型、UNIX时间戳( int、bigint或varchar数据类型)、两种格式并列存储,还是完全以其他形式存储?
发布于 2008-10-22 20:51:58
我将以MS-SQL格式存储日期,以帮助充分使用T-SQL中的日期操作函数。它更容易写和读
SELECT * FROM Foo
WHERE DateDiff(d,field1,now()) < 1而不是尝试通过处理整数来执行等效操作。
要将MsSQL日期转换为unix时间戳,请使用dateDiff:
SELECT DATEDIFF(s,'1970-01-01 00:00:00',fieldName) as fieldNameTS
FROM TableName
WHERE fieldName between '10/1/2008' and '10/31/2008'要将Unix时间戳转换为MsSQL日期,可以在PHP中完成:
$msSQLDate = date("Y-m-d H:i:s", $unixDate );或在MsSQL中
INSERT INTO TableName (
fieldName
) VALUES (
DATEADD(s,'1970-01-01 00:00:00', ? )
) 其中参数1是int($unixDate)
发布于 2008-10-22 20:36:45
我建议使用与任何数据库引擎中的所有日期相同的方法,即数据库原生类型。(DATETIME)
只需使用"YYYY-MM-DD HH:MM:SS“在php:date('Y-m-d H:i:s', $myTimeStampInSeconds);中插入
-edit在这里回应下面的评论-
SQL对于选定的列,您可以使用SQL strtotime( $yourColumnValue );
发布于 2008-10-23 10:52:19
大家好,祝大家愉快!
是的,这可能是最好的方式,将日期存储在db中,它们将采用db格式,您可以在需要的时候格式化
但是在ISO开发的国际日期格式中还有另一种解决方案,我指的是ISO8601。
ISO (ISO 8601)定义的国际格式试图通过如下定义数字日期系统来解决所有日期问题: YYYY-MM-DD其中
YYYY是所有数字的年份,即2100 MM是01 (1月)至12 (12月) DD是01至31天,视月份而定:P
使用数字日期在可读性和可用性方面也有一些缺陷它不是perfect.But日期格式,然而,对于普遍(和准确)可理解的日期表示来说,是最好的选择。
请注意,此格式还可用于表示带有时区信息的精确日期和时间
以下是有关ISO 8601:2000的详细信息
没有更多的..。拜拜
https://stackoverflow.com/questions/227428
复制相似问题