当PHP是您的主要语言时,在SQL Server数据库中存储日期/时间的首选格式是什么?

Joe*_*oni 11 php sql-server time datetime

我正在计划一个需要在MSSQL数据库中存储日期/时间的PHP应用程序.(好奇的是,这是一个日历应用程序.)存储此信息的首选格式是什么?

MSSQL有自己的日期时间数据类型,它在数据库本身很好用,并且非常易读.但是,没有任何MSSQL函数可以将datetime值转换为PHP的首选格式 - UNIX时间戳.这使得使用PHP更加痛苦.UNIX时间戳很有吸引力,因为这就是PHP所喜欢的,但它肯定不具有可读性,并且没有一堆很好的内置MSSQL函数来处理数据.

您是将这些信息作为日期时间数据类型存储为UNIX时间戳(如int,bigint或varchar数据类型),作为两种格式并排,还是完全不同?

Ada*_*ess 13

我会以MS-SQL格式存储日期,以帮助充分利用T-SQL中的日期操作功能.它更容易编写和阅读

SELECT * FROM Foo
WHERE DateDiff(d,field1,now()) < 1
Run Code Online (Sandbox Code Playgroud)

比试图通过操纵整数来执行等效操作

要将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'
Run Code Online (Sandbox Code Playgroud)

要将Unix时间戳转换为MsSQL日期,您可以在PHP中执行:

$msSQLDate = date("Y-m-d H:i:s", $unixDate );
Run Code Online (Sandbox Code Playgroud)

或者在MsSQL中

INSERT INTO TableName ( 
  fieldName
) VALUES (
  DATEADD(s,'1970-01-01 00:00:00', ? ) 
) 
Run Code Online (Sandbox Code Playgroud)

参数one为int($ unixDate)


Kri*_*ris 5

我建议对任何数据库引擎中的所有日期都采用相同的方法,即数据库本机类型。(约会时间)

只需使用“YYYY-MM-DD HH:MM:SS”在php中插入: date('Y-m-d H:i:s', $myTimeStampInSeconds);

- 编辑回应下面的评论 -

  1. 对于您可以使用的选定列 $timestamp = strtotime( $yourColumnValue );
  2. 我建议以数据库本机格式存储,因为您可以使用 SQL 来比较使用 SQL 日期/时间函数(如 DATEADD() 等)的记录。