Вы можете использовать запускается с ()
String city = "London";
if (city.startsWith("Lon")) {
// do something
}
Используйте это для генерации небольшого времени между 01 января 1900 и 06 июня 2079 года (не проверено, SQL не установлен)
DATEADD(day, (ABS(CHECKSUM(NEWID())) % 65530), 0)
NEWID лучше, чем попытка использовать RAND: RAND не генерирует другие значения строка в одном SELECT или UPDATE (ну, в SQL 2000 это не изменилось, если поведение изменилось).
Редактировать: вот так
UPDATE
table
SET
datetimecol = DATEADD(day, (ABS(CHECKSUM(NEWID())) % 65530), 0)
Редактировать: изменить с 65535 на 65530 и добавить ABS, чтобы избежать переполнения при верхнем пределе диапазон
Я дополню ответы ниже,
SELECT DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 3650), '2000-01-01')
FROM your_table
Это генерирует даты, начиная с 2000-01-01, и вы можете изменить количество дней в значении модуля, я положил 3650 (около 10 лет), этот подход не переполняется.
Если вы хотите обновить, то
UPDATE your_table
SET your_date_field = DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 3650), '2000-01-01')
WHERE your_conditions
Следующий код заполнит столбец StartDate таблицы FiscalYear случайными датами между двумя указанными датами:
-- First, let's declare the date range.
DECLARE @date_from DATETIME;
DECLARE @date_to DATETIME;
-- Set the start and date dates. In this case, we are using
-- the month of october, 2006.
SET @date_from = '1985-10-14';
SET @date_to = '2009-04-27';
UPDATE FiscalYear SET StartDate =
(
-- Remember, we want to add a random number to the
-- start date. In SQL we can add days (as integers)
-- to a date to increase the actually date/time
-- object value.
@date_from +
(
-- This will force our random number to be >= 0.
ABS
(
-- This will give us a HUGE random number that
-- might be negative or positive.
CAST(CAST(NewID() AS BINARY(8)) AS INT)
)
-- Our random number might be HUGE. We can't have
-- exceed the date range that we are given.
-- Therefore, we have to take the modulus of the
-- date range difference. This will give us between
-- zero and one less than the date range.
%
-- To get the number of days in the date range, we
-- can simply substrate the start date from the
-- end date. At this point though, we have to cast
-- to INT as SQL will not make any automatic
-- conversions for us.
CAST((@date_to - @date_from) AS INT)
)
)
Используя приведенный ниже код, вы можете получить случайное целое число между @Min (1) и @Max (365), затем с помощью функции dateadd вы можете создавать случайные даты за последний год.
CREATE VIEW vRandNumber
AS
SELECT RAND() as RandNumber
GO
CREATE FUNCTION RandNumber(@Min int, @Max int)
RETURNS int
AS
BEGIN
RETURN round(@Min + (select RandNumber from vRandNumber) * (@Max-@Min),0)
END
GO
Update table1
set theDate = dateadd(d,0-dbo.RandNumber(1,365),getdate())
вы можете попытаться получить случайное число (положительное или отрицательное), а затем добавить это число к дате (возможно, к системной дате).
Например (у меня нет доступа к праву sqlserver теперь я не могу проверить синтаксис)
DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1 - FLOOR(RAND(CAST(NEWID() AS binary(4))) * 365.25 * 90), 0)