我正在计划一个php应用程序,它需要在mssql数据库中存储日期/时间。(对于好奇的人来说,这是一个日历应用程序。)存储这些信息的首选格式是什么?
mssql有自己的datetime数据类型,它在数据库中运行良好,可读性很强。但是,没有任何mssql函数可以将datetime值转换为php首选格式unix timestamp。这使得使用php更加痛苦。unix时间戳很有吸引力,因为这正是php所喜欢的,但它肯定没有那么可读,而且没有一堆很好的内置mssql函数来处理数据。
您将这些信息存储为datetime数据类型、unix时间戳(int、bigint或varchar数据类型)、并排存储为两种格式还是完全存储为其他格式?

最佳答案

我将以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)

07-28 02:50
查看更多