2015-04-29 4 views
3

У меня есть поле таблицы AccID, где мне нужно объединить Name с Date как «MyName-010415» в SQL-запросе.Формат даты с двумя цифрами в SQL

Формат даты: 01-04-2015 или 01/04/2015. Но я хочу показать его как 010415.

+2

Какой тип столбца держит дату? Даты не имеют специального форматирования. Кроме того, какая версия SQL Server? – jpw

+0

Избегайте хранить даты как varchar в базе данных. Если это не вариант, по крайней мере, избегать таких форматов, как 'ddMMyyyy' и' MMddyyyy', потому что они обычно вызывают проблемы с синтаксическим разбором. Например, в '01/04/2015', какая часть месяца? Я предполагаю, что '01' из-за разделителя'/'. Хотя в '01-04-2015' я предполагаю, что' 04' - это месяц (стиль европейской даты). – B0Andrew

+1

Какие СУБД вы используете? (MySQL, SQL Server, Oracle, SQLite?) –

ответ

2

Для части даты, чтобы получить формат, который вы хотите, попробуйте это:

SELECT 
    RIGHT(REPLICATE('0', 2) + CAST(DATEPART(DD, accid) AS VARCHAR(2)), 2) + 
    RIGHT(REPLICATE('0', 2) + CAST(DATEPART(MM, accid) AS VARCHAR(2)), 2) + 
    RIGHT(DATEPART(YY, accid), 2) AS CustomFormat 
FROM yourtablename 
... 

DATEPART(DD, accid) даст вам день часть и то же самое для mm и yy даст вам месяц и год частей. Затем я добавил функции RIGHT(REPLICATE('0', 2) + CAST(... AS VARCHAR(2)), 2), чтобы добавить начальный ноль, вместо 1 будет 01.


Как @bernd-linde предложил, вы можете использовать эту функцию, чтобы сцепить его с названием части, как:

concat(Name, ....) AS ... 

Также вы можете просто SELECT или UPDATE в зависимости от что ты ищешь.

Как в @bernd-lindefiddle.

+2

Вы на правильном пути, но я думаю, что OP хочет заполнить AccID, а не извлечь из него. Взгляните на этот [SQLFiddle] (http://sqlfiddle.com/#!6/eeb1c/3), который расширяет ваш ответ с помощью этого требования. (Не хотел публиковать как новый ответ, так как он повторно использует ваш код) –

+0

@BerndLinde - Спасибо, но OP сказал, что ему нужно конкатенировать в SQL-запросе, поэтому я понимаю, что у него есть два столбца, одно - это имя, а другое столбец даты, поэтому он может просто добавить часть имени и '-' перед столбцом customFormat из моего запроса. Спасибо за ваше предложение, я добавлю. –

+0

Спасибо за помощь Guys :) – Abdul

0

Я не уверен, какой язык вы используете. Возьмем php в качестве примера.

  $AccID = $name.'-'.date('dmy'); 

ИЛИ, прежде чем сохранить этот формат данных на дату, прежде чем вставить данные в базу данных .. или вы можете написать триггер на вставку.

+1

Язык SQL, как указано в вопросе с «в SQL-запросе» :) –

+0

Вы можете написать триггер перед вставкой данных. – m82amjad

0

Для изменения формата вашей даты и CONCAT вам необходимо использовать DATE_FORMAT, чтобы указать имя и дату.

Пример:

SELECT CONCAT(name, '-', DATE_FORMAT(field,'%m%d%y')) 
FROM tbl 
Смежные вопросы