写一个转换程序,旨在把一套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]....."
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
延伸阅读
- php+MSSQL的坑:(n)varchar型字段被截断
- 不用“维护计划”实现mssql定期备份并压缩存档
- MS SQL server 自定义函数:获取汉字拼音首字母(音序)
- ms sql server中获取上次插入记录的标识id号(类似mysql LAST_INSERT_ID)
- php 通过mssql_xx函数读mssql 2005记录, text/ntext字段非常速度慢
- centOS 6下通过yum安装php-mssql以使php支持microsoft sql server连接
- MySQL(csv,text)导入mssql方法参考
- 一个无敌的下载站点:msdn I tell you,作什么用就不说了,谁用谁知道
- Microsoft SQL server数据库转换为MySQL方法
- [转]ms sql server 存储过程,查看正在执行的sql语句
- ms sql server下unix时间戳函数unix_timestamp, from_unixtime(与mysql兼容)