Результаты поиска
Как я могу вычислить чей-то возраст в C#?
Учитывая, что DateTime представляет собой день рождения человека, как я могу рассчитать его возраст в годах?
Вычислить относительное время в C#
Учитывая конкретное значение DateTime , как я могу отобразить относительное время, например:
- 2 часа назад
- 3 дня назад
- месяц назад
Как удалить временную часть значения datetime (сервер SQL)?
Вот что я использую:
SELECT CAST(FLOOR(CAST(getdate() as FLOAT)) as DATETIME)
Я думаю, что может быть лучший и более элегантный способ.
Требования:
- Это должно быть как можно быстрее (чем меньше отливок, тем лучше).
- Конечным результатом должен быть тип
datetime, а не строка.
Как выполнить синтаксический анализ и конвертировать DateTime в формат даты-времени RFC 3339?
Как преобразовать структуру DateTime в ее эквивалент RFC 3339 форматированного строкового представления и / или проанализировать это строковое представление обратно в структуру DateTime? Формат даты-времени RFC-3339 используется в ряде спецификаций, таких как формат синдикации Atom.
Работа с PHP сервером и MySQL сервером в разных часовых поясах
Для тех из нас, кто использует стандартные пакеты общего хостинга, такие как GoDaddy или сетевые решения, как вы обрабатываете конверсии datetime, когда ваш хостинг-сервер (PHP) и MySQL сервер находятся в разных часовых поясах?
Кроме того, есть ли у кого-нибудь рекомендации по определению часового пояса, в котором находится посетитель вашего сайта, и соответствующим образом манипулирует переменной datetime?
Преобразование даты / времени с помощью time.mktime кажется неправильным
>>> import time
>>> time.strptime("01-31-2009", "%m-%d-%Y")
(2009, 1, 31, 0, 0, 0, 5, 31, -1)
>>> time.mktime((2009, 1, 31, 0, 0, 0, 5, 31, -1))
1233378000.0
>>> 60*60*24 # seconds in a day
86400
>>> 1233378000.0 / 86400
14275.208333333334
>>> import time
>>> time.strptime("01-31-2009", "%m-%d-%Y")
(2009, 1, 31, 0, 0, 0, 5, 31, -1)
>>> time.mktime((2009, 1, 31, 0, 0, 0, 5, 31, -1))
1233378000.0
>>> 60*60*24 # seconds in a day
86400
>>> 1233378000.0 / 86400
14275.208333333334
time.mktime должно возвращать количество секунд с момента начала эпохи. Поскольку я даю ему время в полночь, а эпоха-в полночь, разве результат не должен быть равномерно делим на количество секунд в день?
Какой хороший способ проверить, находятся ли две даты в один и тот же календарный день в TSQL?
Вот проблема, с которой я сталкиваюсь: у меня есть большой запрос, который должен сравнить даты в предложении where, чтобы увидеть, если две даты находятся в один и тот же день. Мое текущее решение, которое отстойно, состоит в том, чтобы отправить даты в UDF, чтобы преобразовать их в полночь того же дня, а затем проверить эти даты на равенство. Когда дело доходит до плана запроса, это катастрофа, как и почти все UDFs в предложениях joins или where. Это одно из немногих мест в моем приложении, где я не смог искоренить функции и дать оптимизатору запросов то, что он действительно может использовать для поиска лучшего индекса.
В этом случае слияние кода функции обратно в запрос кажется нецелесообразным.
Мне кажется, я упускаю здесь что-то простое.
Вот функция для справки.
if not exists (select * from dbo.sysobjects
where id = object_id(N'dbo.f_MakeDate') and
type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
exec('create function dbo.f_MakeDate() returns int as
begin declare @retval int return @retval end')
go
alter function dbo.f_MakeDate
(
@Day datetime,
@Hour int,
@Minute int
)
returns datetime
as
/*
Creates a datetime using the year-month-day portion of @Day, and the
@Hour and @Minute provided
*/
begin
declare @retval datetime
set @retval = cast(
cast(datepart(m, @Day) as varchar(2)) +
'/' +
cast(datepart(d, @Day) as varchar(2)) +
'/' +
cast(datepart(yyyy, @Day) as varchar(4)) +
' ' +
cast(@Hour as varchar(2)) +
':' +
cast(@Minute as varchar(2)) as datetime)
return @retval
end
go
Чтобы усложнить ситуацию, я подключаюсь к таблицам часовых поясов, чтобы проверить дату по местному времени, которое может отличаться для каждой строки:
where
dbo.f_MakeDate(dateadd(hh, tz.Offset +
case when ds.LocalTimeZone is not null
then 1 else 0 end, t.TheDateINeedToCheck), 0, 0) = @activityDateMidnight
[Редактировать]
Я включаю предложение @Todd's:
where datediff(day, dateadd(hh, tz.Offset +
case when ds.LocalTimeZone is not null
then 1 else 0 end, t.TheDateINeedToCheck), @ActivityDate) = 0
Мое неправильное представление о том, как работает datediff (один и тот же день года в последовательные годы дает 366, а не 0, как я ожидал), заставило меня потратить много усилий.
Но план запроса не изменился. Я думаю, что мне нужно вернуться к чертежной доске со всем этим.
Естественный язык Дата / Время парсер для .NET?
Кто-нибудь знает о парсере даты и времени .NET, похожем на хронический для Ruby (обрабатывает такие вещи, как "tomorrow" или "3 часа дня в следующий четверг")?
Примечание: Я действительно пишу Ruby (именно так я знаю о хроническом), но этот проект должен использовать .NET.
SQL сервер DateTime сбой преобразования
У меня есть большая таблица с 1 миллионом+ записей. К сожалению, человек, создавший таблицу, решил поместить даты в поле varchar(50) .
Мне нужно сделать простое сравнение дат -
datediff(dd, convert(datetime, lastUpdate, 100), getDate()) < 31
Но он терпит неудачу на convert() :
Conversion failed when converting datetime from character string.
По-видимому, в этой области есть что-то, что ему не нравится, и поскольку существует так много записей, я не могу сказать, просто взглянув на нее. Как я могу правильно очистить все поле даты, чтобы оно не провалилось на convert() ? Вот что у меня сейчас есть:
select count(*)
from MyTable
where
isdate(lastUpdate) > 0
and datediff(dd, convert(datetime, lastUpdate, 100), getDate()) < 31
Я не беспокоюсь о производительности в этом случае. Это будет одноразовый запрос. Изменение таблицы на поле datetime не является опцией.
Я попытался добавить третий аргумент, но это не имеет никакого значения.
Проблема скорее всего в том, как хранятся данные, есть только два безопасных формата; ISO YYYYMMDD; ISO 8601 yyyy-mm-dd Thh:mm:ss:mmm (без пробелов)
Разве чек isdate() не позаботится об этом?
Мне не нужна точность 100%. Я просто хочу получить большую часть записей за последние 30 дней.
select isdate('20080131') -- returns 1
select isdate('01312008') -- returns 0
Поместите CASE и ISDATE внутри функции CONVERT().
Спасибо! Вот и все.
Является ли DateTime.Now лучшим способом измерения производительности функции?
Мне нужно найти узкое место и нужно как можно точнее измерить время.
Является ли следующий фрагмент кода лучшим способом измерения производительности?
DateTime startTime = DateTime.Now;
// Some execution process
DateTime endTime = DateTime.Now;
TimeSpan totalTimeTaken = endTime.Subtract(startTime);