2011-06-01 161 views
1

我有一个PHP脚本,通过SQL存储SQL Server 2005的日期时间

$date = '15 Jun 2011 00:00'; 
$sql = "INSERT INTO shows (DateStart) VALUES ('$date')"; 

中插入值到SQL Server 2005的表我有2个问题:

1)如何以最佳方式这个日期转换成一些SQL服务器理解?在我的系统上,默认格式是mm/dd/yyyy,但我想将日期呈现为用户可读的日期。

2)当插入一个空字符串时,DateStart值被设置为1/1/1900。如何最好地将“无效”日期转换为NULL(该列已接受NULL),以便如果$date = "" then DateStart IS NULL

谢谢!

回答

5
  • 点1:使用ISO日期格式YYYY-MM-DDTHH:MM:SS
    注意:迄今为止,只有使用YYYYMMDD监守异常的SQL Server如何解析日期
  • 点2:NULLIF(value, '')
+0

+1为ISO日期格式! – 2011-06-01 08:42:07

+0

+1。你有解析异常日期的更多信息吗? – 2011-06-01 08:59:39

+0

@Mark S. Rasmussen:在评论b​​unfight这里对两个答案(是我和@marc_s)与进一步的链接http://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a日期字符串 – gbn 2011-06-01 09:01:31

0
  1. 我想在日期时间列中插入记录时的日期时间格式应始终为“YYYY-MM-DD HH:MM:SS”Default Format

  2. gbn已经告诉。

+0

链接的文章似乎没有包含关于使用'YYYY-MM-DD HH:MM:SS'格式的任何建议。 – 2011-06-01 09:34:12

+0

请看看[这个答案](http://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a-date-string/1138203#1138203),因为它显示清楚当这种格式不可靠。 – 2011-06-01 09:37:40

+0

谢谢Andriy。这是gbn 81.9K声望的原因。我在datetime列的数据库中插入了记录,并且它没有存储T – Pankaj 2011-06-01 11:32:24

相关问题