php中ms sql server日期时间类型转换成 unix时间戳

写一个转换程序,旨在把一套asp+mssql博客系统数据迁移到php+mysql系统下,需要转换日期类型(mssql数据库里的日期时间类型datetime值)为unix时间戳,但发现mssql里读取到的时间通过

$dateline=(int)strtotime($row['addtime']);

转换,得到的值是0,很奇怪;检查后发现,$row['addtime']的时间格式不太正常,形式如下:
06 28 2007 2:21PM
11 3 2005 12:52AM
03 18 2010 1:08AM
11 4 2005 12:56PM
01 23 2010 11:02AM

或许在php.ini里有mssql库的设置参数,可以设置日期时间类型的格式,但是绝大多数php环境配置都是默认状态的配置,于是需要通过程序兼容这个事实。

从mssql查询的sql语句做一下修改即可以:
$sql="SELECT [logid]
,convert(varchar(500),[topic]) as topic
,convert(text,[logtext]) as logtext
,[userid]
,[authorid]
,convert(varchar(100),[author]) as author
,convert(varchar(30),[addtime],120) as addtime
,[truetime]....."
---mssql数据库里的日期时间类型datetime值,使用php的mssql库读取得到的
----------更多的转换格式参看这里-------------------------------
使用 CONVERT:

CONVERT (data_type[(length)], expression [, style])
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),\'-\',\'\'),\' \',\'\'),\':\',\'\')
20040912110608

select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12

select CONVERT(varchar(12) , getdate(), 112 )
20040912

select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12

select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004

select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004

select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004

select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004

select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004

select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004

select CONVERT(varchar(12) , getdate(), 108 )
11:06:08

select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1

select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1

select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177




coded by nessus

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据