Как преобразовать столбец метки времени SQL Server в формат datetime



как SQL Server возвращает метку времени, как 'Nov 14 2011 03:12:12:947PM', есть ли простой способ конвертировать строку в формат даты, например 'Y-m-d H:i:s'.



пока я использую



date('Y-m-d H:i:s',strtotime('Nov 14 2011 03:12:12:947PM'))
740   9  

9 ответов:

SQL Server TIMESTAMP тип данных имеет ничего сделать с датой и временем!

это просто двоичное представление последовательного числа - это хорошо только для того, чтобы убедиться, что строка не изменилась с момента ее чтения.

в новых версиях SQL Server он называется RowVersion - так как это действительно так. Смотрите MSDN docs on ROWVERSION:

это тип данных, который автоматически выставляет сформированные уникальные двоичные числа в базе данных. типа rowversion обычно используется в качестве механизма для версии-штамповка строк таблицы. Этот тип данных rowversion -просто увеличивающееся число и не делает сохранить дату или время. Чтобы записать дату или время, используйте datetime2 тип данных.

так не может преобразование SQL Server TIMESTAMP к дате / времени-это просто не дата / время.

но если вы говорите метку времени, но на самом деле вы имеете в виду

С помощью Cast вы можете получить дату из поля timestamp:

SELECT CAST(timestamp_field AS DATE) FROM tbl_name

мои коллеги помогли мне с этим:

select CONVERT(VARCHAR(10), <tms_column>, 112), count(*)
from table where <tms_column> > '2012-09-10'
group by CONVERT(VARCHAR(10), <tms_column>, 112);

или

select CONVERT(DATE, <tms_column>, 112), count(*)
from table where <tms_column> > '2012-09-10'
group by CONVERT(DATE, <tms_column>, 112);

работает нормально, кроме этого сообщения:

неявное преобразование из типа данных varchar в метку времени не допускается. Используйте функцию CONVERT для выполнения этого запроса

Так что да, отметка времени (RowVersion) является не свидание :)

честно говоря, я сам довольно долго возился, чтобы найти способ преобразовать его в дату.

лучший способ-преобразовать его в INT и сравнить. Вот что этот тип должен быть. Если вы хотите свидание-просто добавьте строка Datetime и жить счастливо с тех пор:)

ура mac

самый простой способ сделать это:

SELECT id,name,FROM_UNIXTIME(registration_date) FROM `tbl_registration`;

это дает столбец даты по крайней мере в удобочитаемом формате. Далее, Если вы хотите изменить формат te нажмите здесь.

некоторые из них на самом деле скрытые до даты и времени с SQL Server 2008 далее.

попробуйте следующий SQL-запрос, и вы увидите сами:

SELECT CAST (0x00009CEF00A25634 AS datetime)

вышеизложенное приведет к 2009-12-30 09:51:03:000 но я встречал те, которые на самом деле не сопоставляются с датой-временем.

почему бы не попробовать FROM_UNIXTIME(unix_timestamp, format)?

Не уверен, что я что-то пропустил здесь, но не можете ли вы просто преобразовать метку времени следующим образом:

CONVERT(VARCHAR,CAST(ZEIT AS DATETIME), 110)

Comments

    Ничего не найдено.