所以我有一個日期時間列,我想轉換爲smalldatetime在我的報告。我期待的是這樣的:日期時間格式不會做什麼應該做
2011-07-13 09:51:21.087 to 2011-07-13 09:51:21
簡單吧?那麼datetime列正在返回一個T而不是一個空格,所以我覺得轉換應該刪除這個,但沒有用......想法?
SELECT LockoutDate
CONVERT(smalldatetime,LockoutDate)[Small Date]
LockoutDate | Small Date
2011-07-13T09:51:21.087 | 2011-07-13T09:51:00
什麼是'T',它爲什麼存在?再次,實際的列是datetime不是nvarchar或任何東西...
編輯:這是我正在處理的代碼。
DECLARE @tableLockPass NVARCHAR(MAX);
SET @tableLockPass = --Statement to check active accounts that are locked
N'<H3>Locked SQL Accounts</H3>' +
N'<table border="2" style="font-size:12px">' +
N'<tr>' +
N'<th>Instance</th>' +
N'<th>Instance Purpose</th>' +
N'<th>Domain Account</th>' +
N'<th>Name</th>' +
N'<th>Account Lock</th>' +
N'<th>Lockout Time</th>' +
N'</tr>' +
CAST ((
SELECT
[td/@align] = 'center',
td = [Instance], '',
[td/@align] = 'center',
td = [Instance Purpose], '',
[td/@align] = 'center',
td = Name, '',
[td/@align] = 'center',
td = [Display Name], '',
[td/@align] = 'center',
td = [Account Lock], '',
[td/@align] = 'center',
td = [Lockout Time], ''
FROM(
SELECT Name
,ADDisplayName [Display Name]
,Instance
,InstancePurpose [Instance Purpose]
,replace(IsLocked,1,'In Place') as [Account Lock]
,convert(smalldatetime,LockoutTime,120) [Lockout Time]
FROM dbo.Security
WHERE IsLocked = 1
) AS DS
ORDER BY Instance, [Display Name]
FOR XML PATH('tr'), TYPE
)AS NVARCHAR(MAX)) +
N'</table>';
IF @tableLockPass IS NOT NULL
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQL_DBMail',
@importance = 'NORMAL',
@recipients = '',
@subject = '',
@body = @tableLockPass,
@body_format = 'HTML';
我不知道這是否是弱代碼。我還是個相當新的SQL,所以這是我扔在一起的東西。
結果是一個漂亮的小表是這樣的:
實例[實例目的]名稱[帳戶鎖定] [鎖定時間]
DEV5一般使用BMMcClure到位2011-07-13T09: 51:00
和MS報告服務?如果是這樣,您是否在企業管理器中看到錯誤或顯示在報告中? –
MS SQL Server。我沒有收到任何這些報告的錯誤。 – user2280319
T只是一種標準(ISO 8601)劃分時間的方式。 CONVERT(smalldatetime,LockoutDate,120) – Horaciux