2012年2月15日 星期三
MSSQL 與 MySQL 的差異
datetime
1. 無法呼叫?
Catchable fatal error: Object of class DateTime could not be converted to string in D:\....\test.php on line 104
要在 connectionInfo新增 ReturnDatesAsStrings 值為 1 ,例如:
$connectionInfo = array("Database"=>"$dbname","UID" => '$uid', "PWD" => '$pwd', "CharacterSet" => "UTF-8",'ReturnDatesAsStrings'=>1);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
2.尾數多 3 個 0 ?
datetime 的型態是 YYYY-MM-DD hh:mm:ss[.nnn],尾數多 3 碼。
可用 smalldatetime :YYYY-MM-DD hh:mm:ss
Date and Time Functions (Transact-SQL)
3.時間
2012-02-16 03:03:08 (MySQL datetime 格式)
SELECT CONVERT(varchar(256), GETDATE(), 120)
20120216061550 --年月日時分秒 (14位數)
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20120216061550827 --年月日時分秒+毫秒 (17位數)
select replace(replace(replace(replace(CONVERT(varchar, getdate(), 121 ),'-',''),' ',''),':',''), '.', '')
ansi_padding
預設值是 'ON',會使欄位會自動產生空格。假設我在插入某個欄位的時候,插入的值是 1 ,並沒有空格。但是呼叫出來之後,可能會變成 '1 ' ,注意這個 1 距離右邊的間距比較大,有一個空格。可以設為 off。不過根據這篇的說法:
在未來的 SQL Server 版本中,ANSI_PADDING 將始終為 ON,且將此選項
顯式設置為 OFF 的任何應用程式都將產生錯誤。 請避免在新的開發工作
中使用此功能,並著手修改當前使用此功能的應用程式。
不知道為什麼要強制設為 ON ?
Trim
沒有單純的 TRIM 函數,要用 LTRIM 或 RTRIM。可以這樣用:LTRIM(RTRIM(@text)),甚至寫成一個自訂函數:
-- MS SQL Trim function
-- Removes leading and trailing white spaces from the supplied
-- text
CREATE FUNCTION dbo.trim(@text varchar(8000))
RETURNS varchar(8000)
BEGIN
RETURN LTRIM(RTRIM(@text))
END
go
可參考這篇文章
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言