2012-12-18 192 views
0

我需要创建一个数据库,它将容纳一些datetime值。SQL Server的php日期时间格式

所以我定义列为datetime类型,并且我有这个日历。

那么,哪些应该是日历输入的格式以便日期时间起作用呢?

因为我需要做一些搜索,即

Select FROM table_name between date1 to date2 

就目前而言,它是:

mm/dd/yyyy 

我使用这个:

$today = date("dd/mm/yyyy");     
$strSQL = "SELECT forma.*, SMS_MONTIME.IDTICKET, SMS_MONTIME.MBYLLUR,SMS_MONTIME.time_added 
FROM forma 
LEFT JOIN SMS_MONTIME ON forma.ID = SMS_MONTIME.IDTICKET WHERE data_e_shitjes=$today"; 

感谢

回答

0

有很多格式支持由SQL Server编辑 - 请参阅MSDN Books Online on CAST and CONVERT。这些格式中的大多数是,依赖于,因此您可以设置哪些设置 - 因此,这些设置可能会工作一些 - 有时不会。

解决这个问题的方法是使用(稍作改动)ISO-8601日期由SQL Server支持的格式 - 这种格式的作品总是 - 不管你的SQL Server的语言和日期格式设置。

ISO-8601 format由SQL Server支持有两种形式:

  • YYYYMMDD只是日期(没有时间部分);请注意:没有破折号!,这非常重要! YYYY-MM-DD不是独立于您的SQL Server中的dateformat设置,并将在所有情况下工作!

或:

  • YYYY-MM-DDTHH:MM:SS的日期和时间 - 这里需要注意:这种格式破折号(但他们可以可省略),并固定T的日期和时间之间的分隔符你的部分DATETIME

这对SQL Server 2000及更新版本有效。

如果你使用SQL Server 2008或更高版本和DATE数据类型(仅DATE - !DATETIME),那么你的确可以同时使用YYYY-MM-DD格式,将工作,也与任何设置在你的SQL Server 。

不要问我为什么这整个话题如此棘手,有点令人困惑 - 这就是它的方式。但使用YYYYMMDD格式,对于任何版本的SQL Server以及SQL Server中的任何语言和dateformat设置,都应该可以。

+0

好吧,所以当我插入日期它像这样进入数据库: 2012/12/12 00:00:00 那么,我应该如何将今天的日期格式与它进行比较? –

+0

@OziOz:SQL Server中的DATETIME类型是一种二进制数字格式 - 它没有与其关联的字符串格式。您可以使用任何字符串格式输出它 –

+0

sO可以帮助我吗? –