Конвертировать дату в TSQL - PullRequest
       13

Конвертировать дату в TSQL

2 голосов
/ 24 февраля 2009

Я перемещаю некоторые данные, и мне нужно придумать оператор TSQL для преобразования дат, находящихся в настоящее время в поле datetime, в другое поле базы данных в формате varchar MM / yy.

Этот оператор должен работать как на SQL Server 2k5 , так и на SQL Compact Edition 3.5 - поэтому ответ должен быть "установленным" и не включать курсоры и т. Д., Которые не поддерживаются в SQLCE. *

Ответы [ 5 ]

2 голосов
/ 24 февраля 2009

в зависимости от типа, т. Е. «101» может быть опасным, если вы когда-либо работаете на сервере баз данных, не принадлежащем США, поскольку mm и dd будут переключаться. Вероятно, то же самое с использованием типа "3". Если вы знаете, что язык сервера всегда будет одинаковым, эти методы самые простые.

Использование datepart, вероятно, более надежно, но если вы хотите сказать 03/08 вместо 3/08, вы должны обязательно поставить префикс месяца с «0», поэтому

select 
    right( '00' + convert(varchar(2), datepart( mm, @ddate)), 2) + '/' +
    right( convert(varchar(4), datepart( yy, @ddate) ), 2 )
1 голос
/ 24 февраля 2009

Как на счет этого ...

select substring(convert(varchar(8),yourdatefield,3),4,5) as newdate 
from yourtable

Так, например,

select substring(convert(varchar(8),getdate(),3),4,5)

дает "02/09".

1 голос
/ 24 февраля 2009

Не совсем то, что вы хотите, но вы должны быть в состоянии легко изменить:

DECLARE @ddate datetime

set @ddate = getdate()

SELECT CAST(DATEPART(month, @ddate) as varchar(2))  + '/' + CAST(DATEPART(year, @ddate) as varchar(4))
0 голосов
/ 24 февраля 2009

http://msdn.microsoft.com/en-us/library/ms187928.aspx

Преобразовать в тип 3 и обрезать последние три символа.

0 голосов
/ 24 февраля 2009

Ознакомьтесь с электронной документацией по книгам для функции DATEPART ().

...