2016-09-04 5 views
1

Я использую версию SQL Server Compact 4.0, и хотя это может показаться простой в поиске в Google, примеры, которые я пробовал, ни один из них не работает.Дата из столбца даты и времени - SQL Server Compact

Моя колонка signup_date является DateTime со значением 04-09-2016 09:05:00.

То, что я пытался до сих пор без особого успеха:

SELECT FORMAT(signup_date, 'Y-m-d') AS signup_date; 
SELECT CONVERT(signup_date, GETDATE()) AS signup_date 
SELECT CAST(data_registo, date) AS signup_date 

я обнаружил, что я мог бы использовать DATEPART функцию, но это заставит меня Concat значения, это правильный путь, чтобы следовать? Если да, то как мне конкатрировать как Y-m-d?

SELECT DATEPART(month, signup_date) 
+0

Вы пробовали 'конвертировать (date, signup_date)'? –

+0

Да, он извлекает ошибку: 'Указанный тип данных недопустим.[Тип данных (если известен) = дата] ' – Linesofcode

+0

Вы хотите, чтобы удалить часть времени и просто оставить ДАТА? –

ответ

0

SQL Server Compact не имеет типа даты.

Если вы не хотите, чтобы увидеть время, преобразовать значения даты и времени в строку:

SELECT CONVERT(nvarchar(10), GETDATE(), 120) 

(Это было проверено и на самом деле работает против SQL Server Compact)

0

Старомодный способ сделать это в SQL Server может работать для ваших целей:

select dateadd(day, datediff(day, 0, signup_date), 0) 

datediff() получает количество дней (как целое) со времени 0. dateadd() добавляет этот число задний.

Если вам не нравится 0 как дату, вы можете поставить любую действительную дату на своем месте:

select dateadd(day, datediff(day, '2000-01-01', signup_date), '2000-01-01') 

EDIT:

Если вы просто не хотите, чтобы увидеть время, преобразовать дату в строку:

select convert(nvarchar(10), signup_date, 120) 

(рекомендую формат YYYY-MM-DD, но другие available.)

+0

Время все еще возвращается. – Linesofcode

+0

Не работает ваше редактирование. Ошибка: 'Указанный тип данных недействителен. [Тип данных (если известен) = varchar] ' – Linesofcode

+0

Использование nvarchar (10) - SQL Compact только для юникода – ErikEJ

-1

Чтобы получить строковое значение, используйте CONVERT

select convert(varchar(10), signup_date, 11) 

Проверьте здесь для различных форматов:

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

Чтобы получить дату, а просто вырезать время, сделать это

Select Cast (signup_date as DATE) 
+0

Ни одно из решений не работает. Ошибка: 'Указанный тип данных недействителен. [Тип данных (если известен) = DATE] ' – Linesofcode

0

Я попытался это и многие другие решения. Я хотел получить общее решение, которое будет работать с любым LCID. Мое решение - немного запутанный код, но он отлично работает для меня. Это система бронирования, в которой мне нужно было выяснить, кто прибывает на определенную дату. ArriveDate - столбец, d - это дата, которую я хочу.

SQL = "SELECT * FROM tablename WHERE dateadd(day, datediff(day, 0, 
ArriveDate), 0)=' " & Format(d, "yyyy-MM-dd") & " ' " 

 Смежные вопросы

  • Нет связанных вопросов^_^